תוספים ל-Editor שפורסמו יכולים ליצור פריטים מותאמים אישית בתפריט Extensions של Editor. מכניסים תפריט של תוסף באמצעות Ui.createAddonMenu ומוסיפים אליו פריטים באמצעות Menu.addItem. בדרך כלל, התפריטים נוצרים בשיטה onOpen של התוסף.
יצירת תפריטים דינמיים שמשתנים בהתאם לאינטראקציות של המשתמשים או למצב התוסף. עם זאת, התוספים צריכים ליצור תפריט ראשוני לפני שהמשתמש מאשר את התוסף. לכן, לפני שיוצרים תפריטים ב-onOpen, חשוב לבדוק את מצב ההרשאה של התוסף. אל תבצעו פעולות שנדרשת עבורן הרשאה (כמו בדיקת סקריפט Properties) בזמן שהתוסף נמצא במצב ScriptApp.AuthMode.NONE. לפרטים נוספים על מצבי ההרשאה ומחזור החיים שלה, אפשר לעיין במאמר בנושא מחזור החיים של ההרשאה.
ניסיון לבצע פעולות שנדרשת עבורן הרשאה כשמצב ההרשאה הוא ScriptApp.AuthMode.NONE יוביל לשגיאה. יכול להיות שהתפריטים של התוספים לא יוצגו.
בדוגמה הבאה אפשר לראות איך יוצרים תפריט דינמי של תוסף למצבי הרשאה שונים:
function onOpen(e) {
// Or DocumentApp, SlidesApp, or FormApp.
var menu = SpreadsheetApp.getUi().createAddonMenu();
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();
}