Mit veröffentlichten Editor-Add-ons können benutzerdefinierte Menüelemente im Menü Erweiterungen des jeweiligen Editors erstellt werden. Fügen Sie mit Ui.createAddonMenu ein Add-on-Menü ein und fügen Sie mit Menu.addItem Elemente hinzu. Menüs werden normalerweise in der onOpen-Methode des Add-ons erstellt.
Dynamische Menüs erstellen, die sich je nach Nutzerinteraktion oder Add-on-Status ändern Add-ons müssen jedoch ein erstes Menü erstellen, bevor sie vom Nutzer autorisiert werden. Prüfen Sie daher den Autorisierungsmodus des Add-ons, bevor Sie Menüs in onOpen erstellen. Führen Sie keine Aktionen aus, für die eine Autorisierung erforderlich ist (z. B. das Prüfen von Script-Properties), während sich das Add-on in ScriptApp.AuthMode.NONE befindet. Weitere Informationen zu den Autorisierungsmodi und zum Autorisierungslebenszyklus finden Sie unter Autorisierungslebenszyklus.
Wenn Sie versuchen, Aktionen auszuführen, für die eine Autorisierung erforderlich ist, während der Autorisierungsmodus ScriptApp.AuthMode.NONE ist, tritt ein Fehler auf. Dadurch werden die Add-on-Menüs möglicherweise nicht angezeigt.
Im folgenden Beispiel wird gezeigt, wie Sie ein dynamisches Add-on-Menü für verschiedene Autorisierungsmodi erstellen:
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();
}