תפריטים מותאמים אישית לתוספים של הכלי לעריכה

תוספים למערכות עריכה שפורסמו יכולים ליצור פריטים מותאמים אישית בתפריט Extensions (תוספים) של מערכת העריכה. אפשר להוסיף תפריט תוספים באמצעות השיטה Ui.createAddonMenu() ולהוסיף אליו פריטים באמצעות השיטה Menu.addItem(). בדרך כלל, תפריטים נוצרים בשיטה onOpen(e) של התוסף.

אפשר ליצור תפריטים דינמיים שמשתנים בהתאם לאינטראקציות של המשתמשים או למצב התוסף. עם זאת, תוספים חייבים ליצור תפריט ראשוני לפני שהמשתמש נותן להם הרשאה. לכן, עליכם לבדוק את מצב ההרשאה של התוסף לפני יצירת תפריטים ב-onOpen(e). אל תנסה לבצע פעולה כלשהי שמחייבת הרשאה (כמו בדיקת הסקריפט Properties) בזמן שהתוסף נמצא בסטטוס ScriptApp.AuthMode.NONE. לפרטים נוספים על מצבי ההרשאה ועל מחזור החיים שלהם, ראו מחזור החיים של הרשאות.

בדוגמה הבאה מוסבר איך ליצור תפריט דינמי של תוספים למצבי הרשאה שונים:

function onOpen(e) {
  var menu = SpreadsheetApp.getUi().createAddonMenu(); // Or DocumentApp or SlidesApp or FormApp.
  if (e && e.authMode == ScriptApp.AuthMode.NONE) {
    // Add a normal menu item (works in all authorization modes).
    menu.addItem('Start workflow', 'startWorkflow');
  } else {
    // Add a menu item based on properties (doesn't work in AuthMode.NONE).
    var properties = PropertiesService.getDocumentProperties();
    var workflowStarted = properties.getProperty('workflowStarted');
    if (workflowStarted) {
      menu.addItem('Check workflow status', 'checkWorkflow');
    } else {
      menu.addItem('Start workflow', 'startWorkflow');
    }
    // Record analytics.
    UrlFetchApp.fetch('http://www.example.com/analytics?event=open');
  }
  menu.addToUi();
}