Menus personnalisés dans Google Workspace

Les scripts peuvent étendre certains produits Google en ajoutant des éléments d'interface utilisateur qui, lorsque l'utilisateur clique dessus, exécutent une fonction Apps Script. L'exemple le plus courant consiste à exécuter un script à partir d'un élément de menu personnalisé dans Google Docs, Sheets, Slides ou Forms, mais les fonctions de script peuvent également être déclenchées en cliquant sur des images et des dessins dans Google Sheets.

Menus personnalisés dans Google Docs, Sheets, Slides ou Forms

Apps Script peut ajouter de nouveaux menus dans Google Docs, Sheets, Slides ou Forms, chaque élément de menu étant lié à une fonction dans un script. (Dans Google Forms, les menus personnalisés ne sont visibles que par un éditeur qui ouvre le formulaire pour le modifier, et non par un utilisateur qui ouvre le formulaire pour y répondre.)

Un script ne peut créer un menu que s'il est lié au document, à la feuille de calcul ou au formulaire. Pour afficher le menu lorsque l'utilisateur ouvre un fichier, écrivez le code du menu dans une fonction onOpen().

L'exemple ci-dessous montre comment ajouter un menu avec un élément, suivi d'un séparateur visuel, puis d'un sous-menu contenant un autre élément. (Notez que dans Google Sheets, vous devez utiliser la syntaxe addMenu(), sauf si vous utilisez la nouvelle version, auquel cas les sous-menus ne sont pas possibles.) Lorsque l'utilisateur sélectionne l'un de ces éléments, une fonction correspondante ouvre une boîte de dialogue d'alerte. Pour en savoir plus sur les types de boîtes de dialogue que vous pouvez ouvrir, consultez le guide des boîtes de dialogue et des barres latérales.

function onOpen() {
  var ui = SpreadsheetApp.getUi();
  // Or DocumentApp, SlidesApp or FormApp.
  ui.createMenu('Custom Menu')
      .addItem('First item', 'menuItem1')
      .addSeparator()
      .addSubMenu(ui.createMenu('Sub-menu')
          .addItem('Second item', 'menuItem2'))
      .addToUi();
}

function menuItem1() {
  SpreadsheetApp.getUi() // Or DocumentApp, SlidesApp or FormApp.
     .alert('You clicked the first menu item!');
}

function menuItem2() {
  SpreadsheetApp.getUi() // Or DocumentApp, SlidesApp or FormApp.
     .alert('You clicked the second menu item!');
}

Un document, une feuille de calcul, une présentation ou un formulaire ne peut contenir qu'un seul menu avec un nom donné. Si le même script ou un autre script ajoute un menu portant le même nom, le nouveau menu remplace l'ancien. Les menus ne peuvent pas être supprimés lorsque le fichier est ouvert. Toutefois, vous pouvez écrire votre fonction onOpen() pour ignorer le menu à l'avenir si une propriété spécifique est définie.

Images et dessins cliquables dans Google Sheets

Vous pouvez également attribuer une fonction Apps Script à une image ou à un dessin dans Google Sheets, à condition que le script soit lié à la feuille de calcul. L'exemple ci-dessous montre comment procéder.

  1. Dans Google Sheets, sélectionnez l'élément de menu Extensions > Apps Script pour créer un script lié à la feuille de calcul.
  2. Supprimez tout code éventuellement présent dans l'éditeur de scripts, puis collez dans ce dernier le code ci-dessous.

      function showMessageBox() {
        Browser.msgBox('You clicked it!');
      }
    
  3. Revenez dans Sheets et insérez une image ou un dessin en sélectionnant Insertion > Image ou Insertion > Dessin.

  4. Après avoir inséré l'image ou le dessin, cliquez dessus. Un petit sélecteur de menu déroulant apparaît en haut à droite. Cliquez dessus et sélectionnez Attribuer un script.

  5. Dans la boîte de dialogue qui s'affiche, saisissez le nom de la fonction Apps Script que vous souhaitez exécuter, sans parenthèses. Dans ce cas, showMessageBox. puis sur OK.

  6. Cliquez à nouveau sur l'image ou le dessin. La fonction s'exécute maintenant.