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

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