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

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

पाबंदियां

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

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

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

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

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

समय के हिसाब से ट्रिगर

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

नीचे दिए गए Google Chat ऐप्लिकेशन जिसमें ऐप्लिकेशन के हर स्पेस में हर मिनट एक मैसेज पोस्ट किया जाता हो:

// Example app for Google Chat that demonstrates app-initiated messages
// by spamming the user every minute.
//
// This app makes use of the Apps Script OAuth2 library at:
//     https://github.com/googlesamples/apps-script-oauth2
//
// Follow the instructions there to add the library to your script.

// When added to a space, we store the space's ID in ScriptProperties.
function onAddToSpace(e) {
  PropertiesService.getScriptProperties()
      .setProperty(e.space.name, '');
  return {
    'text': 'Hi! I\'ll post a message here every minute. ' +
            'Please remove me after testing or I\'ll keep spamming you!'
  };
}

// When removed from a space, we remove the space's ID from ScriptProperties.
function onRemoveFromSpace(e) {
  PropertiesService.getScriptProperties()
      .deleteProperty(e.space.name);
}

// Add a trigger that invokes this function every minute in the
// "Edit > Current Project's Triggers" menu. When it runs, it
// posts in each space the app was added to.
function onTrigger() {
  var spaceIds = PropertiesService.getScriptProperties()
      .getKeys();
  var message = { 'text': 'Hi! It\'s now ' + (new Date()) };
  for (var i = 0; i < spaceIds.length; ++i) {
    postMessage(spaceIds[i], message);
  }
}
var SCOPE = 'https://www.googleapis.com/auth/chat.bot';
// The values below are copied from the JSON file downloaded upon
// service account creation.
// For SERVICE_ACCOUNT_PRIVATE_KEY, remember to include the BEGIN and END lines
// of the private key
var SERVICE_ACCOUNT_PRIVATE_KEY = '...';
var SERVICE_ACCOUNT_EMAIL = 'service-account@project-id.iam.gserviceaccount.com';

// Posts a message into the given space ID via the API, using
// service account authentication.
function postMessage(spaceId, message) {
  var service = OAuth2.createService('chat')
      .setTokenUrl('https://accounts.google.com/o/oauth2/token')
      .setPrivateKey(SERVICE_ACCOUNT_PRIVATE_KEY)
      .setClientId(SERVICE_ACCOUNT_EMAIL)
      .setPropertyStore(PropertiesService.getUserProperties())
      .setScope(SCOPE);
  if (!service.hasAccess()) {
    Logger.log('Authentication error: %s', service.getLastError());
    return;
  }
  var url = 'https://chat.googleapis.com/v1/' + spaceId + '/messages';
  UrlFetchApp.fetch(url, {
    method: 'post',
    headers: { 'Authorization': 'Bearer ' + service.getAccessToken() },
    contentType: 'application/json',
    payload: JSON.stringify(message),
  });
}

इवेंट-ड्रिवन ट्रिगर

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

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

यहां ऐसे कई ट्रिगर हैं जिन्हें इंस्टॉल किया जा सकता है Google Workspace ऐप्लिकेशन:

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

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

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

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

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

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

इसकी मदद से, प्रोग्राम के हिसाब से ट्रिगर बनाए और मिटाए जा सकते हैं स्क्रिप्ट सेवा. कॉल करके शुरू करें 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;
    }
  }
}

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

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

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

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

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

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

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

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

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