fx ट्रिगर और ऑटोमेशन
ENहिन्दी

Installable और समय-आधारित ट्रिगर

⏱ 15 मिनट

आप क्या सीखेंगे

  • installable triggers, simple triggers से कैसे अलग हैं
  • Triggers page और code से trigger बनाना
  • समय-आधारित triggers: हर घंटे, रोज़, हर हफ़्ते
  • duplicate triggers से बचना

समझिए

Simple बनाम installable

Simple trigger Installable trigger
Setup बस function का नाम एक बार बनाना पड़ता है (UI या code)
email भेज सकता / Drive इस्तेमाल नहीं हाँ
किसके नाम से चलता है उस समय का user जिसने trigger बनाया
समय-आधारित नहीं हाँ
अधिकतम run time 30 सेकंड ~6 मिनट
Event types open, edit, selection open, edit, change, form submit, time, calendar

Installable triggers आपकी permissions से चलते हैं, तब भी जब कोई file खुली न हो — इसीलिए ये हर दिन सुबह 9 बजे email भेज पाते हैं।

Editor से trigger बनाना

  1. बाईं ओर Triggers (घड़ी) icon पर click करें।
  2. + Add Trigger (नीचे दाईं ओर)।
  3. function, event source (Time-driven या From spreadsheet) और type चुनें।
  4. चाहें तो failure notifications सेट करें — ज़रूरी jobs के लिए Notify me immediately चुनें।
  5. Save करें और authorize करें।

Code से trigger बनाना

// Run dailyReport every day between 9 and 10 a.m. (project time zone)
function createDailyTrigger() {
  ScriptApp.newTrigger('dailyReport')
    .timeBased()
    .everyDays(1)
    .atHour(9)
    .create();
}

// Run syncRates every hour
function createHourlyTrigger() {
  ScriptApp.newTrigger('syncRates')
    .timeBased()
    .everyHours(1)
    .create();
}

// Run weeklySummary every Monday around 8 a.m.
function createWeeklyTrigger() {
  ScriptApp.newTrigger('weeklySummary')
    .timeBased()
    .onWeekDay(ScriptApp.WeekDay.MONDAY)
    .atHour(8)
    .create();
}

create… function को एक ही बार चलाएँ। हर run एक और trigger जोड़ देता है — दो बार चलाया तो हर सुबह दो emails आएँगे।

ध्यान दें: atHour(9) का मतलब "9:00 से 10:00 के बीच कभी भी" है, ठीक 9:00 नहीं। मिनट वाले triggers में everyMinutes(1), 5, 10, 15 या 30 ही चलते हैं।

Installable onEdit (email के साथ)

function createEditTrigger() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  ScriptApp.newTrigger('onBigOrder')
    .forSpreadsheet(ss)
    .onEdit()
    .create();
}

function onBigOrder(e) {
  const r = e.range;
  if (r.getSheet().getName() !== 'Orders' || r.getColumn() !== 4) return;
  if (Number(e.value) > 100000) {
    MailApp.sendEmail('owner@example.com', 'Big order', `Order in row ${r.getRow()}: ₹${e.value}`);
  }
}

Handler का नाम onEdit से अलग रखें — वरना यह दो बार चलेगा (एक बार simple trigger की तरह, एक बार installable की तरह), और simple वाला MailApp पर fail होगा।

सुरक्षित setup: duplicates से बचें

function resetTriggers() {
  // Delete existing triggers for this project that call dailyReport
  ScriptApp.getProjectTriggers()
    .filter(t => t.getHandlerFunction() === 'dailyReport')
    .forEach(t => ScriptApp.deleteTrigger(t));

  ScriptApp.newTrigger('dailyReport').timeBased().everyDays(1).atHour(9).create();
}

जब भी (दोबारा) install करना हो, resetTriggers चलाएँ — यह हमेशा ठीक एक trigger छोड़ता है।

मुख्य बातें

  • Installable triggers email भेज सकते हैं, Drive इस्तेमाल कर सकते हैं और schedule पर चलते हैं।
  • ये बनाने वाले के नाम से चलते हैं, इसलिए सब offline हों तब भी काम करते हैं।
  • एक बार बनाएँ; duplicates साफ़ करने के लिए getProjectTriggers इस्तेमाल करें।
  • हर triggered run देखने के लिए Executions देखें।

अभ्यास

अभ्यासअभ्यास 1

remindPending function के लिए resetTriggers लिखिए जो हर कामकाजी दिन (सोम–शुक्र) लगभग सुबह 10 बजे चले। Hint: loop में पाँच onWeekDay triggers बनाइए।

प्रश्नोत्तरी

कौन-सा trigger email भेज सकता है? a) Simple onEdit b) Installable onEdit c) Custom function
Installable onEdit
createDailyTrigger तीन बार चलाने से क्या होगा? a) कुछ ख़ास नहीं b) तीन daily triggers बन जाएँगे c) error
तीन daily triggers बन जाएँगे
Installable और समय-आधारित ट्रिगर · हिंदी | ExcelWalaa