Menus personnalisés des modules complémentaires de l'éditeur

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

Vous pouvez créer des menus dynamiques qui changent en fonction des interactions de l'utilisateur ou de l'état du module complémentaire. Toutefois, les modules complémentaires doivent créer un menu initial avant qu'ils ne soient autorisés par l'utilisateur. Pour cette raison, 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 une action nécessitant une autorisation (telle que vérifier le script Properties) tant que le module complémentaire se trouve dans ScriptApp.AuthMode.NONE. Consultez le cycle de vie des autorisations pour en savoir plus sur les modes d'autorisation et le cycle de vie.

L'exemple suivant montre comment créer un menu complémentaire 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();
}