इंस्टॉल किए जा सकने वाले ट्रिगर

सिंपल ट्रिगर की तरह, इंस्टॉल किए जा सकने वाले ट्रिगर की मदद से Google Apps Script, किसी फ़ंक्शन को अपने-आप चला सकती है. ऐसा तब होता है, जब कोई खास इवेंट होता है. जैसे, कोई दस्तावेज़ खोलना. हालांकि, इंस्टॉल किए जा सकने वाले ट्रिगर, सामान्य ट्रिगर की तुलना में ज़्यादा फ़्लेक्सिबिलिटी देते हैं: ये ऐसी सेवाओं को कॉल कर सकते हैं जिनके लिए अनुमति की ज़रूरत होती है. ये समय के हिसाब से (घड़ी) ट्रिगर करने वाले इवेंट के साथ-साथ, कई अन्य तरह के इवेंट भी उपलब्ध कराते हैं. साथ ही, इन्हें प्रोग्राम के हिसाब से कंट्रोल किया जा सकता है. सामान्य और इंस्टॉल किए जा सकने वाले, दोनों तरह के ट्रिगर के लिए, Apps Script ट्रिगर किए गए फ़ंक्शन को इवेंट ऑब्जेक्ट पास करता है. इसमें उस कॉन्टेक्स्ट के बारे में जानकारी होती है जिसमें इवेंट हुआ था.

ऐड-ऑन में ट्रिगर इस्तेमाल करने के बारे में ज़्यादा जानने के लिए, Google Workspace ऐड-ऑन के लिए ट्रिगर लेख पढ़ें.

पाबंदियां

इंस्टॉल किए जा सकने वाले ट्रिगर, सामान्य ट्रिगर के मुकाबले ज़्यादा फ़्लेक्सिबिलिटी देते हैं. हालांकि, इन पर अब भी कई पाबंदियां लागू होती हैं:

  • अगर किसी फ़ाइल को सिर्फ़ पढ़ने के लिए (देखने या टिप्पणी करने) मोड में खोला जाता है, तो ये स्क्रिप्ट नहीं चलती हैं. स्टैंडअलोन स्क्रिप्ट के लिए, उपयोगकर्ताओं के पास स्क्रिप्ट फ़ाइल को देखने का ऐक्सेस होना चाहिए, ताकि ट्रिगर ठीक से काम कर सकें.
  • स्क्रिप्ट को चलाने और एपीआई के अनुरोध करने से ट्रिगर नहीं चलते. उदाहरण के लिए, FormResponse.submit() को कॉल करने पर, फ़ॉर्म का नया जवाब सबमिट होता है. इससे फ़ॉर्म सबमिट करने का ट्रिगर चालू नहीं होता.

    इस पाबंदी का एक अपवाद Form.submitGrades() है. अगर आपके कोड में onFormSubmit ट्रिगर का इस्तेमाल किया जाता है, तो Form.submitGrades() को कॉल करने से onFormSubmit की शर्त ट्रिगर हो जाती है और एक इनफ़िनिट लूप बन जाता है. इनफ़िनिट लूप को रोकने के लिए, ऐसा कोड जोड़ें जो submitGrades() को कॉल करने से पहले यह जांच करे कि ग्रेड पहले से मौजूद हैं या नहीं.

  • इंस्टॉल किए जा सकने वाले ट्रिगर हमेशा उस व्यक्ति के खाते में चलते हैं जिसने उन्हें बनाया है. उदाहरण के लिए, अगर आपने इंस्टॉल किया जा सकने वाला ओपन ट्रिगर बनाया है, तो यह तब काम करता है, जब आपका सहयोगी दस्तावेज़ खोलता है. हालांकि, यह आपके खाते के तौर पर काम करता है. इसका मतलब है कि अगर आपने किसी दस्तावेज़ के खुलने पर ईमेल भेजने के लिए ट्रिगर बनाया है, तो ईमेल हमेशा आपके खाते से भेजा जाएगा. यह ज़रूरी नहीं है कि ईमेल उस खाते से भेजा जाए जिसने दस्तावेज़ खोला है. हालांकि, हर खाते के लिए इंस्टॉल की जा सकने वाली ट्रिगर बनाई जा सकती है. इससे हर खाते से एक ईमेल भेजा जाता है.

  • कोई खाता, दूसरे खाते से इंस्टॉल किए गए ट्रिगर नहीं देख सकता. हालांकि, पहला खाता अब भी उन ट्रिगर को चालू कर सकता है.

  • इंस्टॉल किए जा सकने वाले ट्रिगर पर, Apps Script ट्रिगर की कोटा सीमाएं लागू होती हैं.

समय के हिसाब से ट्रिगर होने वाले ट्रिगर

समय के हिसाब से ट्रिगर होने वाला ट्रिगर (इसे क्लॉक ट्रिगर भी कहा जाता है) Unix में क्रॉन जॉब की तरह होता है. समय के हिसाब से ट्रिगर होने वाली स्क्रिप्ट, किसी तय समय पर या बार-बार ट्रिगर होने वाली अवधि के हिसाब से काम करती हैं. ये स्क्रिप्ट हर मिनट में एक बार या महीने में एक बार ट्रिगर हो सकती हैं. (कोई ऐड-ऑन, समय के हिसाब से ट्रिगर होने वाली सुविधा का इस्तेमाल ज़्यादा से ज़्यादा एक बार प्रति घंटे कर सकता है.) समय में थोड़ा बदलाव हो सकता है. उदाहरण के लिए, अगर आपने सुबह 9 बजे ट्रिगर होने वाला कोई बार-बार होने वाला ट्रिगर बनाया है, तो Apps Script सुबह 9 बजे से 10 बजे के बीच का कोई समय चुनता है. इसके बाद, वह हर दिन उसी समय पर ट्रिगर होता है, ताकि ट्रिगर के दोबारा चालू होने से पहले 24 घंटे पूरे हो जाएं.

इवेंट पर आधारित ट्रिगर

इंस्टॉल किए जा सकने वाले इवेंट-ड्रिवन ट्रिगर, कॉन्सेप्ट के हिसाब से सिंपल ट्रिगर जैसे कि onOpen() के जैसे ही होते हैं. हालांकि, ये ज़्यादा इवेंट पर प्रतिक्रिया दे सकते हैं और इनका व्यवहार अलग होता है.

उदाहरण के लिए, Google Sheets के लिए इंस्टॉल किया जा सकने वाला ओपन ट्रिगर तब चालू होता है, जब स्प्रेडशीट को बदलाव करने का ऐक्सेस रखने वाला कोई भी उपयोगकर्ता खोलता है. यह onOpen() ट्रिगर की तरह ही काम करता है. हालांकि, इंस्टॉल किया जा सकने वाला वर्शन, उन सेवाओं को कॉल कर सकता है जिनके लिए अनुमति की ज़रूरत होती है. इंस्टॉल किया जा सकने वाला वर्शन, ट्रिगर बनाने वाले उपयोगकर्ता की अनुमति से चलता है. भले ही, बदलाव करने का ऐक्सेस रखने वाला कोई दूसरा उपयोगकर्ता स्प्रेडशीट खोले.

Google Workspace ऐप्लिकेशन के लिए, इंस्टॉल किए जा सकने वाले कई ट्रिगर उपलब्ध हैं:

  • open ट्रिगर को इंस्टॉल किया जा सकता है. यह तब काम करता है, जब कोई उपयोगकर्ता ऐसी स्प्रेडशीट, दस्तावेज़ या फ़ॉर्म खोलता है जिसमें बदलाव करने की अनुमति उसके पास है.
  • बदलाव करने पर ट्रिगर होने वाला इंस्टॉल किया जा सकने वाला ट्रिगर, तब काम करता है, जब कोई उपयोगकर्ता स्प्रेडशीट में किसी वैल्यू में बदलाव करता है.
  • इंस्टॉल किया जा सकने वाला बदलाव ट्रिगर तब काम करता है, जब कोई उपयोगकर्ता स्प्रेडशीट के स्ट्रक्चर में बदलाव करता है. उदाहरण के लिए, नई शीट जोड़कर या किसी कॉलम को हटाकर.
  • फ़ॉर्म सबमिट करने का इंस्टॉल किया जा सकने वाला ट्रिगर तब काम करता है, जब कोई उपयोगकर्ता किसी फ़ॉर्म का जवाब देता है. फ़ॉर्म सबमिट करने वाले ट्रिगर के दो वर्शन होते हैं. एक Google Forms के लिए और दूसरा Sheets के लिए, अगर फ़ॉर्म को स्प्रेडशीट में सबमिट किया जाता है.
  • इंस्टॉल किया जा सकने वाला कैलेंडर इवेंट ट्रिगर तब काम करता है, जब उपयोगकर्ता के कैलेंडर इवेंट अपडेट किए जाते हैं. जैसे, इवेंट बनाना, उनमें बदलाव करना या उन्हें मिटाना.

इंस्टॉल किए जा सकने वाले ट्रिगर, स्टैंडअलोन और बाउंड स्क्रिप्ट में उपलब्ध होते हैं. उदाहरण के लिए, कोई स्टैंडअलोन स्क्रिप्ट, प्रोग्राम के हिसाब से किसी भी Google Sheets फ़ाइल के लिए इंस्टॉल किया जा सकने वाला ट्रिगर बना सकती है. इसके लिए, उसे TriggerBuilder.forSpreadsheet(key) को कॉल करना होगा और स्प्रेडशीट का आईडी पास करना होगा.

ट्रिगर को मैन्युअल तरीके से मैनेज करना

स्क्रिप्ट एडिटर में, इंस्टॉल किया जा सकने वाला ट्रिगर मैन्युअल तरीके से बनाने के लिए, यह तरीका अपनाएं:

  1. अपना Apps Script प्रोजेक्ट खोलें.
  2. बाईं ओर, ट्रिगर पर क्लिक करें.
  3. सबसे नीचे दाईं ओर, ट्रिगर जोड़ें पर क्लिक करें.
  4. आपको जिस तरह का ट्रिगर बनाना है उसे चुनें और कॉन्फ़िगर करें.
  5. सेव करें पर क्लिक करें.

प्रोग्राम के हिसाब से ट्रिगर मैनेज करना

Script service का इस्तेमाल करके, ट्रिगर को प्रोग्रामैटिक तरीके से बनाया और मिटाया जा सकता है. ScriptApp.newTrigger(functionName) को कॉल करके शुरू करें. इससे TriggerBuilder मिलता है.

यहां दिए गए उदाहरण में, समय के हिसाब से ट्रिगर होने वाले दो ट्रिगर बनाने का तरीका बताया गया है.इनमें से एक ट्रिगर हर छह घंटे में ट्रिगर होता है और दूसरा हर सोमवार सुबह 9 बजे ट्रिगर होता है. यह उस टाइम ज़ोन के हिसाब से ट्रिगर होता है जिसके लिए आपकी स्क्रिप्ट सेट की गई है.

triggers/triggers.gs
/**
 * Creates two time-driven triggers.
 * @see https://developers.google.com/apps-script/guides/triggers/installable#time-driven_triggers
 */
function createTimeDrivenTriggers() {
  // Trigger every 6 hours.
  ScriptApp.newTrigger("myFunction").timeBased().everyHours(6).create();
  // Trigger every Monday at 09:00.
  ScriptApp.newTrigger("myFunction")
    .timeBased()
    .onWeekDay(ScriptApp.WeekDay.MONDAY)
    .atHour(9)
    .create();
}

यहां दिए गए अगले उदाहरण में, स्प्रेडशीट के लिए इंस्टॉल किया जा सकने वाला ओपन ट्रिगर बनाने का तरीका बताया गया है. सामान्य onOpen() ट्रिगर के उलट, इंस्टॉल किए जा सकने वाले ट्रिगर के लिए स्क्रिप्ट को स्प्रेडशीट से बाइंड करने की ज़रूरत नहीं होती. स्टैंडअलोन स्क्रिप्ट से इस ट्रिगर को बनाने के लिए, SpreadsheetApp.getActive() को SpreadsheetApp.openById(id) को कॉल करने वाले फ़ंक्शन से बदलें.

triggers/triggers.gs
/**
 * Creates a trigger for when a spreadsheet opens.
 * @see https://developers.google.com/apps-script/guides/triggers/installable
 */
function createSpreadsheetOpenTrigger() {
  const ss = SpreadsheetApp.getActive();
  ScriptApp.newTrigger("myFunction").forSpreadsheet(ss).onOpen().create();
}

प्रोग्राम के हिसाब से इंस्टॉल की जा सकने वाली किसी मौजूदा ट्रिगर में बदलाव करने के लिए, आपको उसे मिटाना होगा और एक नया ट्रिगर बनाना होगा. अगर आपने पहले किसी ट्रिगर का आईडी सेव किया है, तो उसे मिटाएं. इसके लिए, आईडी को इस फ़ंक्शन में आर्ग्युमेंट के तौर पर पास करें.

triggers/triggers.gs
/**
 * Deletes a trigger.
 * @param {string} triggerId The Trigger ID.
 * @see https://developers.google.com/apps-script/guides/triggers/installable
 */
function deleteTrigger(triggerId) {
  // Loop over all triggers.
  const allTriggers = ScriptApp.getProjectTriggers();
  for (let index = 0; index < allTriggers.length; index++) {
    // If the current trigger is the correct one, delete it.
    if (allTriggers[index].getUniqueId() === triggerId) {
      ScriptApp.deleteTrigger(allTriggers[index]);
      break;
    }
  }
}

ट्रिगर बनाने से पहले, पुष्टि करें कि उससे जुड़े फ़ंक्शन के पास सभी ज़रूरी OAuth अनुमतियां हैं.

ट्रिगर में गड़बड़ियां

जब इंस्टॉल किया जा सकने वाला ट्रिगर चालू होता है, लेकिन फ़ंक्शन कोई अपवाद दिखाता है या किसी और वजह से ठीक से नहीं चलता है, तो आपकी स्क्रीन पर गड़बड़ी का कोई मैसेज नहीं दिखता है. आखिरकार, जब समय के हिसाब से ट्रिगर होने वाला कोई इवेंट चलता है या कोई दूसरा उपयोगकर्ता, फ़ॉर्म सबमिट करने वाले ट्रिगर को चालू करता है, तो हो सकता है कि आप अपने कंप्यूटर पर न हों.

इसके बजाय, Apps Script इस तरह का ईमेल भेजता है:

From: noreply-apps-scripts-notifications@google.com
Subject: Summary of failures for Apps Script
Your script has recently failed to finish successfully.
A summary of the failure(s) is shown below.

ईमेल में ट्रिगर को बंद करने या फिर से कॉन्फ़िगर करने का लिंक शामिल होता है. अगर स्क्रिप्ट को Google Sheets, Docs या Forms की फ़ाइल से बाउंड किया गया है, तो ईमेल में उस फ़ाइल का लिंक भी शामिल होता है. इन लिंक की मदद से, ट्रिगर को बंद किया जा सकता है या स्क्रिप्ट में बदलाव करके गड़बड़ी को ठीक किया जा सकता है.

अपनी स्क्रिप्ट में मौजूद गड़बड़ियों को ठीक करने के लिए, सूचना वाले ईमेल में दिए गए लिंक पर क्लिक करके अपना स्क्रिप्ट प्रोजेक्ट खोलें. प्रोजेक्ट खुलने के बाद, बाईं ओर मौजूद नेविगेशन पैनल में Executions पर क्लिक करके, एक्ज़ीक्यूशन लॉग देखें. इन लॉग से पता चलता है कि कौनसे एक्ज़ीक्यूशन पूरे नहीं हुए. साथ ही, इनमें गड़बड़ी के मैसेज भी शामिल होते हैं, ताकि आपको समस्या का पता लगाने और उसे ठीक करने में मदद मिल सके.

ऐड-ऑन से बनाए गए इंस्टॉल किए जा सकने वाले ट्रिगर, उपयोगकर्ताओं को ये ईमेल सूचनाएं नहीं भेजते.

अपने Google खाते से जुड़े सभी ट्रिगर की समीक्षा करने और उन ट्रिगर को बंद करने के लिए, यह तरीका अपनाएं जिनकी अब आपको ज़रूरत नहीं है:

  1. script.google.com पर जाएँ.
  2. बाईं ओर, मेरे ट्रिगर पर क्लिक करें.
  3. किसी ट्रिगर को मिटाने के लिए, ट्रिगर की दाईं ओर मौजूद, ज़्यादा > ट्रिगर मिटाएं पर क्लिक करें.

अगर किसी ट्रिगर को बंद कर दिया जाता है, तो उससे जुड़ी गड़बड़ी की सूचनाएं भी बंद हो जाती हैं. ट्रिगर के चालू होने पर, टास्क पूरा न होने की सूचनाएं मिलती हैं. इसलिए, किसी ट्रिगर के लिए सूचनाएं न पाने के लिए, ट्रिगर को बंद करें या मिटा दें. ट्रिगर चालू होने पर, सिर्फ़ इन सूचनाओं के दिखने की फ़्रीक्वेंसी को अडजस्ट किया जा सकता है.

 Simple triggers like `onOpen()` can't be deactivated from this
 page; instead, edit the appropriate script and remove or rename
 the `onOpen()` function.

ऐड-ऑन में ट्रिगर

इंस्टॉल किए जा सकने वाले ट्रिगर के अलावा, ऐड-ऑन में मेनिफ़ेस्ट ट्रिगर का इस्तेमाल करें. ज़्यादा जानकारी के लिए, Google Workspace ऐड-ऑन के लिए ट्रिगर लेख पढ़ें.