Menus personnalisés dans Google Workspace

Les scripts permettent d'é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 des menus dans Google Docs, Sheets, Slides ou Forms, et chaque élément de menu est associé à 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 l'ouvre 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 seul élément, suivi d'un séparateur visuel, puis d'un sous-menu contenant un autre élément. (Notez que dans Google Sheets, sauf si vous utilisez la nouvelle version, vous devez utiliser la syntaxe addMenu() à la place, et les sous-menus ne sont pas possibles.) Lorsque l'utilisateur sélectionne l'un des éléments de menu, 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. Il n'est pas possible de supprimer les menus lorsque le fichier est ouvert. Toutefois, vous pouvez écrire votre fonction onOpen() pour ignorer ce menu si une propriété donnée 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 associé à 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 à 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 s'affiche 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 (showMessageBox dans ce cas). puis sur OK.

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