בדומה לטריגרים פשוטים, טריגרים שניתן להתקין מאפשרים להריץ פונקציה ב-Apps Script באופן אוטומטי כשאירוע מסוים מתרחש, למשל פתיחת מסמך. עם זאת, טריגרים שניתן להתקין מציעים גמישות רבה יותר מטריגרים פשוטים: הם יכולים להפעיל שירותים שדורשים הרשאה, הם מציעים כמה סוגים נוספים של אירועים, כולל טריגרים מבוססי-זמן (שעון), ואפשר לשלוט בהם באופן פרוגרמטי. גם בטריגרים פשוטים וגם בטריגרים שניתן להתקין, ב-Apps Script מעבירים לפונקציה שהופעל אובייקט אירוע שמכיל מידע על ההקשר שבו האירוע התרחש.
הגבלות
טריגרים שניתן להתקין מציעים גמישות רבה יותר מטריגרים פשוטים, אבל הם עדיין כפופים למספר הגבלות:
- הן לא פועלות אם הקובץ נפתח במצב קריאה בלבד (צפייה או תגובה). בסקריפטים עצמאיים, המשתמשים צריכים לקבל לפחות הרשאת צפייה בקובץ הסקריפט כדי שהטריגרים יפעלו כמו שצריך.
הפעלות של סקריפטים ובקשות ל-API לא גורמות להפעלה של טריגרים. לדוגמה, קריאה ל-
FormResponse.submit()
כדי לשלוח תשובה חדשה לטופס לא גורמת להפעלה של הטריגר לשליחת הטופס.טריגרים שניתן להתקין פועלים תמיד בחשבון של מי שיצר אותם. לדוגמה, אם יוצרים טריגר פתוח שניתן להתקנה, הוא פועל כשהקולגה פותח את המסמך (אם לקולגה יש הרשאת עריכה), אבל הוא פועל באמצעות החשבון שלכם. כלומר, אם יוצרים טריגר לשליחת אימייל כשמסמך נפתח, האימייל תמיד נשלח מהחשבון שלכם, ולא בהכרח מהחשבון שבו המסמך נפתח. עם זאת, תוכלו ליצור טריגר שניתן להתקנה לכל חשבון, וכתוצאה מכך תישלח הודעת אימייל אחת מכל חשבון.
בחשבון מסוים אי אפשר לראות טריגרים שהותקנו מחשבון שני, אבל עדיין אפשר להפעיל את הטריגרים האלה בחשבון הראשון.
טריגרים שניתן להתקין כפופים למכסות הטריגרים של Apps Script.
טריגרים מבוססי-זמן
טריגר מבוסס-זמן (נקרא גם טריגר שעון) דומה למשימה ב-cron ב-Unix. טריגרים מבוססי-זמן מאפשרים להריץ סקריפטים בזמן מסוים או במרווח זמן קבוע, בתדירות של כל דקה ועד פעם בחודש. (שימו לב שתוסף יכול להשתמש בטריגר מבוסס-זמן פעם בשעה לכל היותר). יכול להיות שהשעה תהיה קצת אקראית – לדוגמה, אם יוצרים טריגר קבוע ל-9:00, Apps Script בוחר שעה בין 9:00 ל-10:00, ואז שומר על התזמון הזה יום אחרי יום, כך שחולפות 24 שעות לפני שהטריגר מופעל שוב.
טריגרים מבוססי-אירועים
טריגרים מבוססי-אירועים שניתן להתקין דומים מבחינה מושגית לטריגרים פשוטים כמו onOpen()
, אבל הם יכולים להגיב לאירועים נוספים והם פועלים בצורה שונה.
לדוגמה, הטריגר הניתן להתקנה לפתיחה של Google Sheets מופעל בכל פעם שמשתמש עם הרשאת עריכה פותח את הגיליון האלקטרוני, בדיוק כמו הטריגר הפשוט onOpen()
. עם זאת, הגרסה שניתן להתקין יכולה להפעיל שירותים שדורשים הרשאה. הגרסה שניתן להתקין פועלת עם ההרשאה של המשתמש שיצר את הטריגר, גם אם משתמש אחר עם גישת עריכה פותח את הגיליון האלקטרוני.
יש כמה טריגרים שניתן להתקין באפליקציותGoogle Workspace :
- טריגר פתיחה שניתן להתקנה פועל כשמשתמש פותח גיליון אלקטרוני, מסמך או טופס שיש לו הרשאה לערוך.
- טריגר עריכה שניתן להתקנה פועל כשמשתמש משנה ערך בגיליון אלקטרוני.
- טריגר שינוי שניתן להתקנה פועל כשמשתמש משנה את המבנה של הגיליון האלקטרוני עצמו – לדוגמה, על ידי הוספת גיליון חדש או הסרה של עמודה.
- טריגר שליחת טופס שניתן להתקנה פועל כשמשתמש משיב לטופס. יש שתי גרסאות של הטריגר לשליחת טופס: אחת ל-Google Forms עצמו ואחת ל-Sheets אם הטופס נשלח לגיליון אלקטרוני.
- טריגר אירוע ביומן שניתן להתקנה פועל כשאירועים ביומן של משתמש מתעדכנים – נוצרים, נערכים או נמחקים.
אפשר להשתמש בטריגרים שניתן להתקין בסקריפטים עצמאיים ובסקריפטים מקושרים. לדוגמה, אפשר ליצור באופן פרוגרמטי טריגר שניתן להתקנה לקובץ שרירותי ב-Google Sheets באמצעות סקריפט עצמאי. לשם כך, צריך להפעיל את הפונקציה TriggerBuilder.forSpreadsheet(key)
ולהעביר את המזהה של הגיליון האלקטרוני.
ניהול טריגרים באופן ידני
כדי ליצור טריגר שניתן להתקנה באופן ידני בעורך הסקריפטים:
- פותחים את פרויקט Apps Script.
- בצד ימין, לוחצים על טריגרים .
- בפינה השמאלית התחתונה, לוחצים על הוספת טריגר.
- בוחרים את סוג הטריגר שרוצים ליצור ומגדירים אותו.
- לוחצים על שמירה.
ניהול טריגרים באופן פרוגרמטי
אפשר גם ליצור ולמחוק טריגרים באופן פרוגרמטי באמצעות שירות הסקריפטים. מתחילים בקריאה ל-ScriptApp.newTrigger(functionName)
, שמחזירה את הערך TriggerBuilder
.
בדוגמה הבאה מוסבר איך ליצור שני טריגרים מבוססי-זמן – אחד שמופעל כל 6 שעות, ואחד שמופעל בכל יום שני בשעה 9:00 (באזור הזמן שבו מוגדר התסריט).
בדוגמה הבאה מוסבר איך יוצרים טריגר פתוח שניתן להתקנה בגיליון אלקטרוני. הערה: בניגוד לטריגר onOpen()
פשוט, אין צורך לקשר את הסקריפט של הטריגר שניתן להתקנה לגיליון האלקטרוני. כדי ליצור את הטריגר הזה מסקריפט עצמאי, פשוט מחליפים את SpreadsheetApp.getActive()
בקריאה ל-SpreadsheetApp.openById(id)
.
כדי לשנות באופן פרוגרמטי טריגר קיים שניתן להתקנה, צריך למחוק אותו וליצור טריגר חדש. אם שמרתם בעבר את המזהה של טריגר, תוכלו למחוק אותו על ידי העברת המזהה כארגומנטים לפונקציה הבאה.
לפני שיוצרים טריגר, מומלץ לוודא שלפונקציה המשויכת יש את כל הרשאות ה-OAuth הנדרשות.
שגיאות בטריגרים
כשטריגר שניתן להתקנה מופעל אבל הפונקציה מפעילה חריגה או לא מצליחה לפעול מסיבה אחרת, לא תופיע הודעת שגיאה במסך. אחרי הכל, כשטריגר מבוסס-זמן פועל או שמשתמש אחר מפעיל את הטריגר לשליחת טופס, יכול להיות שאתם אפילו לא ליד המחשב.
במקום זאת, תישלח אליכם הודעת אימייל מ-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.