Menús personalizados para complementos del editor

Los complementos de editor publicados pueden crear elementos de menú personalizados en el menú Extensiones del editor. Puedes insertar un menú de complementos con el método Ui.createAddonMenu() y agregarle elementos con el método Menu.addItem(). Por lo general, los menús se crean en el método onOpen(e) del complemento.

Puedes crear menús dinámicos que cambien según las interacciones del usuario o el estado de complementos. Sin embargo, los complementos deben crear un menú inicial antes de que el usuario autorice el complemento. Por lo tanto, debes verificar el modo de autorización del complemento antes de crear menús en onOpen(e). No intentes realizar ninguna acción que requiera autorización (como verificar la secuencia de comandos Properties) mientras el complemento esté en ScriptApp.AuthMode.NONE. Consulta el ciclo de vida de la autorización para obtener más detalles sobre los modos y el ciclo de vida de la autorización.

En el siguiente ejemplo, se muestra cómo compilar un menú de complemento dinámico para diferentes modos de autorización:

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();
}