समझिए
Trigger क्या है?
Trigger किसी घटना पर function को अपने-आप चलाता है — file खुले, cell edit हो, form submit हो, या तय समय आए। Simple triggers सबसे आसान हैं: function को एक तय (reserved) नाम दीजिए, Google उसे चला देगा। कोई setup नहीं।
| Function का नाम | कब चलता है… |
|---|---|
onOpen(e) |
कोई file खोले (edit access के साथ) |
onEdit(e) |
user किसी cell की value बदले |
onSelectionChange(e) |
user कोई दूसरा cell चुने |
onInstall(e) |
add-on install हो |
doGet(e) / doPost(e) |
web app URL खोला जाए (Module 5) |
Menu बनाने के लिए आप onOpen पहले ही इस्तेमाल कर चुके हैं।
onEdit और event object
onEdit चलने पर Google एक event object e देता है जो बताता है कि क्या बदला:
function onEdit(e) {
const range = e.range; // the edited cell(s)
const sheet = range.getSheet();
console.log(sheet.getName(), range.getA1Notation(), 'old:', e.oldValue, 'new:', e.value);
}
काम की properties:
e.range— edit हुई rangee.value— नई value (सिर्फ़ एक cell के edit पर)e.oldValue— पुरानी value (सिर्फ़ एक cell के edit पर)e.source— spreadsheet
उदाहरण 1: अपने-आप timestamp
Orders tab में Status column (D) बदले तो column E में तारीख़ और समय लिख दें।
function onEdit(e) {
const range = e.range;
const sheet = range.getSheet();
if (sheet.getName() !== 'Orders') return; // only this tab
if (range.getColumn() !== 4) return; // only column D
if (range.getRow() === 1) return; // ignore header
sheet.getRange(range.getRow(), 5).setValue(new Date());
}
ऊपर की तीन return lines ज़रूरी हैं: onEdit file के हर edit पर चलता है, इसलिए अगर edit आपके काम का नहीं है तो तुरंत बाहर निकलें।
उदाहरण 2: codes को capital letters में करना
function onEdit(e) {
const r = e.range;
if (r.getSheet().getName() === 'Stock' && r.getColumn() === 2 && typeof e.value === 'string') {
r.setValue(e.value.toUpperCase());
}
}
एक project में एक ही onEdit
onEdit नाम के दो functions नहीं हो सकते। helpers call करके दोनों को जोड़ें:
function onEdit(e) {
stampStatus(e);
upperCaseCodes(e);
}
Simple triggers की सीमाएँ
- Authorization वाली services नहीं: email (
GmailApp/MailApp) नहीं भेज सकते, Drive या दूसरी files नहीं छू सकते। Simple triggers user से permission लिए बिना चलते हैं। - 30 सेकंड में पूरा होना ज़रूरी।
onEditसिर्फ़ इंसान के edits पर चलता है — scripts के बदलावों, formulas के recalculate होने या form submissions पर नहीं।- कई cells में paste करने पर एक ही
onEditcall आता है, जिसमेंe.rangeकई cells की होती है (औरe.valueनहीं होता)। - Editor में
onEditपर Run न दबाएँ —eundefinedहोगा और error आएगा। शीट में edit करके test करें।
Email या Drive चाहिए तो installable trigger लें (अगला lesson)।
मुख्य बातें
- Function का नाम
onOpenयाonEditरखिए, बस चल जाएगा। e.rangeसे देखें कि edit कहाँ हुआ, वरना जल्दी बाहर निकलें।- Simple triggers email नहीं भेज सकते और दूसरी files नहीं छू सकते।