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

תוספי עריכה שפורסמו יכולים ליצור מנות לתפריט מותאם אישית בתפריט התוספים של העורך. אפשר להוסיף תפריט של תוספים באמצעות השיטה Ui.createAddonMenu(), ולהוסיף לה פריטים באמצעות method 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();
}