Menus personnalisés pour les modules complémentaires d'éditeurs

Les modules complémentaires d'éditeur publiés peuvent créer des éléments de menu personnalisés dans le menu Extensions de leur éditeur. Vous pouvez insérer un menu de module complémentaire à l'aide de la méthode Ui.createAddonMenu() et y ajouter des éléments à l'aide de la méthode Menu.addItem(). Les menus sont généralement créés dans la méthode onOpen(e) du module complémentaire.

Vous pouvez créer des menus dynamiques qui changent en fonction des interactions des utilisateurs ou de l'état du module complémentaire. Toutefois, les modules complémentaires doivent créer un menu initial avant d'être autorisés par l'utilisateur. Par conséquent, vous devez vérifier le mode d'autorisation du module complémentaire avant de créer des menus dans onOpen(e). N'essayez pas d'effectuer d'action nécessitant une autorisation (par exemple, la vérification du script Properties) lorsque le module complémentaire est en ScriptApp.AuthMode.NONE. Pour en savoir plus sur les modes et le cycle de vie de l'autorisation, consultez le cycle de vie de l'autorisation.

L'exemple suivant montre comment créer un menu de modules complémentaires dynamique pour différents modes d'autorisation:

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