साधारण ट्रिगर की तरह ही, इंस्टॉल किए जा सकने वाले ट्रिगर की मदद से, Apps Script किसी फ़ंक्शन को अपने-आप चलाता है. ऐसा तब होता है, जब कोई खास इवेंट होता है, जैसे कि कोई दस्तावेज़ खोलना. हालांकि, इंस्टॉल किए जा सकने वाले ट्रिगर, सामान्य ट्रिगर के मुकाबले ज़्यादा सुविधाएं देते हैं: ये ऐसी सेवाओं को कॉल कर सकते हैं जिनके लिए अनुमति की ज़रूरत होती है. साथ ही, ये समय पर आधारित (घड़ी) ट्रिगर के साथ-साथ कई अन्य तरह के इवेंट भी ऑफ़र करते हैं. साथ ही, इन्हें प्रोग्राम के हिसाब से कंट्रोल किया जा सकता है. आसान और इंस्टॉल किए जा सकने वाले, दोनों तरह के ट्रिगर के लिए, Apps Script, ट्रिगर किए गए फ़ंक्शन को एक इवेंट ऑब्जेक्ट भेजता है. इसमें उस कॉन्टेक्स्ट की जानकारी होती है जिसमें इवेंट हुआ था.
पाबंदियां
भले ही इंस्टॉल किए जा सकने वाले ट्रिगर, आसान ट्रिगर के मुकाबले ज़्यादा विकल्प देते हैं, फिर भी उन पर कई पाबंदियां लागू होती हैं:
- अगर कोई फ़ाइल रीड-ओनली (देखने या टिप्पणी करने) मोड में खोली जाती है, तो ये सुविधाएं काम नहीं करतीं. स्टैंडअलोन स्क्रिप्ट के लिए, उपयोगकर्ताओं को स्क्रिप्ट फ़ाइल का कम से कम व्यू ऐक्सेस होना चाहिए, ताकि ट्रिगर सही तरीके से चल सकें.
स्क्रिप्ट के चलने और एपीआई अनुरोधों की वजह से ट्रिगर नहीं चलते. उदाहरण के लिए, नया फ़ॉर्म जवाब सबमिट करने के लिए
FormResponse.submit()
को कॉल करने से, फ़ॉर्म के सबमिट ट्रिगर नहीं चलते.इंस्टॉल किए जा सकने वाले ट्रिगर, हमेशा उन्हें बनाने वाले व्यक्ति के खाते से चलते हैं. उदाहरण के लिए, अगर आपने इंस्टॉल किया जा सकने वाला ओपन ट्रिगर बनाया है, तो यह तब चलता है, जब आपका सहकर्मी उस दस्तावेज़ (अगर आपके सहकर्मी के पास बदलाव करने का ऐक्सेस है) को खोलता है, लेकिन वह आपके खाते के तौर पर चलता है. इसका मतलब है कि अगर आपने दस्तावेज़ खोलने पर ईमेल भेजने के लिए कोई ट्रिगर बनाया है, तो ईमेल हमेशा आपके खाते से भेजा जाएगा. ऐसा ज़रूरी नहीं है कि ईमेल उस खाते से भेजा जाए जिसने दस्तावेज़ खोला है. हालांकि, आपके पास हर खाते के लिए इंस्टॉल किया जा सकने वाला ट्रिगर बनाने का विकल्प है. इससे हर खाते से एक ईमेल भेजा जाएगा.
दिया गया खाता किसी दूसरे खाते से इंस्टॉल किए गए ट्रिगर नहीं देख सकता, भले ही पहला खाता अब भी उन ट्रिगर को सक्रिय कर सकता है.
इंस्टॉल किए जा सकने वाले ट्रिगर, Apps Script ट्रिगर कोटा की सीमाओं पर निर्भर करते हैं.
समय के हिसाब से ट्रिगर
समय के हिसाब से ट्रिगर होने वाली कार्रवाई (जिसे क्लॉक ट्रिगर भी कहा जाता है), यूनिक्स में क्रॉन जॉब जैसी होती है. समय के हिसाब से ट्रिगर करने की सुविधा से, स्क्रिप्ट को किसी तय समय पर या बार-बार होने वाली किसी अवधि पर चलाया जा सकता है. स्क्रिप्ट को हर मिनट या महीने में एक बार भी चलाया जा सकता है. (ध्यान दें कि ऐड-ऑन, समय के हिसाब से ट्रिगर का इस्तेमाल, ज़्यादा से ज़्यादा एक घंटे में एक बार कर सकता है.) समय थोड़ा अलग हो सकता है—उदाहरण के लिए, अगर आपने सुबह 9 बजे बार-बार ट्रिगर करने का विकल्प चुना है, तो Apps Script सुबह 9 बजे से 10 बजे के बीच का समय चुनता है. इसके बाद, हर दिन उसी समय ट्रिगर को ट्रिगर करता है, ताकि ट्रिगर फिर से ट्रिगर होने से पहले 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)
को कॉल करके स्प्रेडशीट का आईडी देना होगा.
ट्रिगर को मैन्युअल तरीके से मैनेज करना
स्क्रिप्ट एडिटर में, मैन्युअल तौर पर इंस्टॉल किया जा सकने वाला ट्रिगर बनाने के लिए, यह तरीका अपनाएं:
- अपना Apps Script प्रोजेक्ट खोलें.
- बाईं ओर, ट्रिगर पर क्लिक करें.
- सबसे नीचे दाईं ओर, ट्रिगर जोड़ें पर क्लिक करें.
- आपको जिस तरह का ट्रिगर बनाना है उसे चुनें और कॉन्फ़िगर करें.
- सेव करें पर क्लिक करें.
प्रोग्राम के हिसाब से ट्रिगर मैनेज करना
स्क्रिप्ट सेवा की मदद से, प्रोग्राम के हिसाब से ट्रिगर बनाए और मिटाए जा सकते हैं. ScriptApp.newTrigger(functionName)
को कॉल करके शुरू करें, इससे TriggerBuilder
दिखेगा.
इस उदाहरण में, समय के हिसाब से काम करने वाले दो ट्रिगर बनाने का तरीका बताया गया है. पहला ट्रिगर हर छह घंटे में और दूसरा ट्रिगर हर सोमवार सुबह 9 बजे (आपकी स्क्रिप्ट के टाइम ज़ोन के हिसाब से) ट्रिगर होता है.
इस अगले उदाहरण में, स्प्रेडशीट के लिए इंस्टॉल किया जा सकने वाला ओपन ट्रिगर बनाने का तरीका बताया गया है. ध्यान दें, किसी सामान्य onOpen()
ट्रिगर के उलट, इंस्टॉल किए जा सकने वाले ट्रिगर की स्क्रिप्ट का स्प्रेडशीट से बाध्य होना ज़रूरी नहीं है. किसी स्टैंडअलोन स्क्रिप्ट से यह ट्रिगर बनाने के लिए, SpreadsheetApp.getActive()
को SpreadsheetApp.openById(id)
के कॉल से बदलें.
प्रोग्राम के हिसाब से, इंस्टॉल किए जा सकने वाले किसी मौजूदा ट्रिगर में बदलाव करने के लिए, आपको उसे मिटाना होगा और नया ट्रिगर बनाना होगा. अगर आपने पहले किसी ट्रिगर का आईडी सेव किया है, तो उसे मिटाया जा सकता है. इसके लिए, नीचे दिए गए फ़ंक्शन में आईडी को आर्ग्युमेंट के तौर पर पास करें.
ट्रिगर में गड़बड़ियां
जब इंस्टॉल किया जा सकने वाला कोई ट्रिगर फ़ायर होता है, लेकिन फ़ंक्शन कोई अपवाद दिखाता है या अगर ऐसा नहीं होता है, तो आपको अपनी स्क्रीन पर गड़बड़ी का मैसेज नहीं दिखता. आखिर, जब समय के हिसाब से ट्रिगर चलता है या कोई दूसरा उपयोगकर्ता आपके फ़ॉर्म सबमिट करने के ट्रिगर को चालू करता है, तो हो सकता है कि आप अपने कंप्यूटर पर न हों.
इसके बजाय, 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 खाते से जुड़े सभी ट्रिगर की समीक्षा करने और उन ट्रिगर को बंद करने के लिए जिनकी अब आपको ज़रूरत नहीं है, यह तरीका अपनाएं:
script.google.com
पर जाएँ.- बाईं ओर, मेरे ट्रिगर पर क्लिक करें.
किसी ट्रिगर को मिटाने के लिए, ट्रिगर की दाईं ओर, ज़्यादा
> ट्रिगर मिटाएं पर क्लिक करें.
ऐड-ऑन में ट्रिगर
इंस्टॉल किए जा सकने वाले ट्रिगर के अलावा, ऐड-ऑन में मेनिफ़ेस्ट ट्रिगर का इस्तेमाल किया जा सकता है. ज़्यादा जानकारी के लिए, Google Workspace ऐड-ऑन के लिए ट्रिगर लेख पढ़ें.