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

תוספים לעורכים שפורסמו יכולים ליצור פריטים מותאמים אישית בתפריט 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();
}