सामान्य ट्रिगर की तरह ही, इंस्टॉल किए जा सकने वाले ट्रिगर की मदद से दस्तावेज़ खोलने जैसे खास इवेंट के होने पर, Apps Script की मदद से अपने-आप फ़ंक्शन चलाया जा सकता है. हालांकि, इंस्टॉल करने लायक ट्रिगर, आसान ट्रिगर के मुकाबले ज़्यादा सुविधाजनक होते हैं: वे उन सेवाओं को कॉल कर सकते हैं जिन्हें अनुमति की ज़रूरत होती है, वे कई तरह के इवेंट ऑफ़र करते हैं, जिनमें टाइम-ड्रिवन (घड़ी) ट्रिगर शामिल होते हैं. साथ ही, उन्हें प्रोग्राम के हिसाब से कंट्रोल किया जा सकता है. आसान और इंस्टॉल किए जा सकने वाले, दोनों तरह के ट्रिगर के लिए Apps Script, ट्रिगर किए गए फ़ंक्शन को एक इवेंट ऑब्जेक्ट पास करता है. इसमें, उस कॉन्टेक्स्ट की जानकारी होती है जिसमें इवेंट हुआ था.
पाबंदियां
भले ही, इंस्टॉल करने लायक ट्रिगर आसान ट्रिगर की तुलना में ज़्यादा आसान होते हैं, फिर भी उन पर कई पाबंदियां लागू होती हैं:
- अगर कोई फ़ाइल सिर्फ़ पढ़ने के लिए (देखें या टिप्पणी करें) मोड में खोली जाती है, तो वे नहीं चलते हैं. स्टैंडअलोन स्क्रिप्ट के लिए, उपयोगकर्ताओं के पास स्क्रिप्ट फ़ाइल को देखने का ऐक्सेस होना चाहिए. इससे ट्रिगर को ठीक से चलाया जा सकता है.
स्क्रिप्ट चलाने और एपीआई अनुरोधों की वजह से ट्रिगर नहीं चलते. उदाहरण के लिए, नए फ़ॉर्म का जवाब सबमिट करने के लिए
FormResponse.submit()
कॉल करने की वजह से, फ़ॉर्म सबमिट करने का ट्रिगर नहीं चलता.इंस्टॉल किए जा सकने वाले ट्रिगर हमेशा उस व्यक्ति के खाते के तहत चलाए जाते हैं जिसने उन्हें बनाया है. उदाहरण के लिए, अगर इंस्टॉल किया जा सकने वाला कोई ओपन ट्रिगर बनाया जाता है, तो वह तब चलता है, जब आपका सहकर्मी दस्तावेज़ खोलता है (अगर आपके सहकर्मी के पास बदलाव करने का ऐक्सेस है), लेकिन वह आपके खाते के तौर पर चलता है. इसका मतलब यह है कि अगर किसी दस्तावेज़ को खोलने पर ईमेल भेजने के लिए ट्रिगर बनाया जाता है, तो ईमेल हमेशा आपके खाते से भेजा जाएगा. यह ज़रूरी नहीं है कि उस खाते से ही दस्तावेज़ भेजा गया हो. हालांकि, हर खाते के लिए इंस्टॉल किया जा सकने वाला एक ट्रिगर बनाया जा सकता है, जिसका नतीजा यह होगा कि हर खाते से एक ईमेल भेजा जाएगा.
किसी दिए गए खाते में किसी दूसरे खाते से इंस्टॉल किए गए ट्रिगर नहीं देखे जा सकते, भले ही पहले खाते से उन ट्रिगर को चालू किया जा सकता हो.
इंस्टॉल किए जा सकने वाले ट्रिगर, Apps Script ट्रिगर के हिसाब से कोटा की सीमाओं पर निर्भर करते हैं.
समय-आधारित ट्रिगर
टाइम-ड्रिवन ट्रिगर (इसे क्लॉक ट्रिगर भी कहा जाता है), Unix में क्रॉन जॉब की तरह ही होता है. समय पर आधारित ट्रिगर की मदद से, स्क्रिप्ट किसी खास समय पर या बार-बार चलने वाले इंटरवल पर काम करती हैं. इन्हें हर मिनट में या महीने में बहुत कम बार लागू किया जा सकता है. (ध्यान दें कि ऐड-ऑन, समय पर आधारित ट्रिगर का इस्तेमाल, हर घंटे में ज़्यादा से ज़्यादा एक बार कर सकता है.) समय थोड़ा अनियमित हो सकता है—उदाहरण के लिए, अगर 9 AM का बार-बार ट्रिगर होने वाला ट्रिगर बनाया जाता है, तो 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()
जैसे
सामान्य ट्रिगर
जैसे होते हैं. हालांकि, वे अन्य इवेंट के जवाब दे सकते हैं. साथ ही, ये अलग-अलग तरीके से काम करते हैं.
उदाहरण के लिए, सामान्य onOpen()
ट्रिगर की तरह ही, Google Sheets के लिए इंस्टॉल किया जा सकने वाला ओपन ट्रिगर तब चालू हो जाता है, जब बदलाव करने का ऐक्सेस रखने वाला कोई भी उपयोगकर्ता स्प्रेडशीट को खोलता है. हालांकि, इंस्टॉल किया जा सकने वाला वर्शन ऐसी सेवाओं को कॉल कर सकता है जिन्हें
अनुमति की ज़रूरत होती है. इंस्टॉल किया जा सकने वाला वर्शन, ट्रिगर बनाने वाले उपयोगकर्ता की अनुमति के साथ चलता है. भले ही,
बदलाव करने के ऐक्सेस वाला कोई दूसरा उपयोगकर्ता स्प्रेडशीट खोलता हो.
ऐसे कई ट्रिगर हैं जिन्हें Google Workspace ऐप्लिकेशन के लिए इंस्टॉल किया जा सकता है:
- इंस्टॉल किया जा सकने वाला ओपन ट्रिगर तब चलता है, जब कोई उपयोगकर्ता ऐसी स्प्रेडशीट, दस्तावेज़ या फ़ॉर्म को खोलता है जिसमें बदलाव करने की उसे अनुमति है.
- इंस्टॉल किया जा सकने वाला बदलाव करें ट्रिगर तब चलता है, जब कोई उपयोगकर्ता किसी स्प्रेडशीट में वैल्यू में बदलाव करता है.
- इंस्टॉल किया जा सकने वाला बदलाव तब ट्रिगर होता है, जब कोई उपयोगकर्ता किसी स्प्रेडशीट के स्ट्रक्चर में बदलाव करता है. उदाहरण के लिए, नई शीट जोड़ना या कोई कॉलम हटाना.
- जब उपयोगकर्ता किसी फ़ॉर्म का जवाब देता है, तब इंस्टॉल किया जा सकने वाला फ़ॉर्म सबमिट ट्रिगर होता है. फ़ॉर्म सबमिट करने के ट्रिगर के दो वर्शन होते हैं, एक Google फ़ॉर्म के लिए और अगर फ़ॉर्म किसी स्प्रेडशीट में सबमिट किया जाता है, तो एक शीट के लिए.
- इंस्टॉल करने लायक कैलेंडर इवेंट ट्रिगर तब चलता है, जब किसी उपयोगकर्ता के कैलेंडर इवेंट बनाए जाते हैं, उनमें बदलाव किए जाते हैं या उन्हें मिटाया जाता है.
आपके पास स्टैंडअलोन और बाउंड स्क्रिप्ट में, इंस्टॉल किए जा सकने वाले ट्रिगर इस्तेमाल करने का विकल्प है. उदाहरण के लिए,
एक स्टैंडअलोन स्क्रिप्ट, प्रोग्राम के हिसाब से, TriggerBuilder.forSpreadsheet(key)
को कॉल करके और स्प्रेडशीट आईडी पास करके, आर्बिट्ररी Google Sheets फ़ाइल के लिए
इंस्टॉल करने लायक ट्रिगर बना सकती है.
ट्रिगर को मैन्युअल रूप से मैनेज करना
स्क्रिप्ट एडिटर में, इंस्टॉल किया जा सकने वाला ट्रिगर मैन्युअल तरीके से बनाने के लिए, यह तरीका अपनाएं:
- अपना 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
पर जाएँ।- बाईं ओर, मेरे ट्रिगर पर क्लिक करें.
किसी ट्रिगर को मिटाने के लिए, ट्रिगर की दाईं ओर, ज़्यादा
> ट्रिगर मिटाएं पर क्लिक करें.
ऐड-ऑन में इंस्टॉल किए जा सकने वाले ट्रिगर
ऐड-ऑन में इंस्टॉल करने लायक ट्रिगर का इस्तेमाल करने के बारे में ज़्यादा जानकारी के लिए, ऐड-ऑन ट्रिगर देखें.