Menús personalizados para complementos del editor

Los complementos del editor publicados pueden crear elementos de menú personalizados en el menú Extensiones de su editor. Inserta un menú de complementos con Ui.createAddonMenu y agrégale elementos con Menu.addItem. Por lo general, los menús se crean en el método onOpen del complemento.

Crea menús dinámicos que cambian según las interacciones del usuario o el estado del complemento. Sin embargo, los complementos deben crear un menú inicial antes de que el usuario los autorice. Por este motivo, verifica el modo de autorización del complemento antes de crear menús en onOpen. No realices ninguna acción que requiera autorización (como verificar el script 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.

Si intentas realizar acciones que requieren autorización cuando el modo de autorización es ScriptApp.AuthMode.NONE, se producirá un error. Esto podría impedir que se muestren los menús de tu complemento.

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

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