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 d'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 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 contenant 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() à la place, sauf si vous utilisez la nouvelle version. En outre, les sous-menus ne sont pas possibles.) Lorsque l'utilisateur sélectionne l'un des éléments du 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 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 or FormApp.
     .alert('You clicked the first menu item!');
}

function menuItem2() {
  SpreadsheetApp.getUi() // Or DocumentApp 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 portant 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 tant que le fichier est ouvert. Toutefois, vous pouvez écrire votre fonction onOpen() pour ignorer ce menu si une propriété 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 le configurer.

  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 dessiné, cliquez dessus. Un petit 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. Cliquez sur OK.

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

Vous pouvez également attribuer une fonction Apps Script à un lien dans Google Sites, à condition que le script soit lié au site. L'exemple ci-dessous montre comment le configurer.

  1. Sur un site Google, cliquez sur Plus > Gérer le site.
  2. Dans la barre latérale, cliquez sur Apps Script, puis sur Ajouter un script pour créer un script lié au site.
  3. Supprimez tout code dans l'éditeur de scripts et collez le code ci-dessous, qui enverra un e-mail lorsque l'utilisateur cliquera sur un lien.

      function sitesLink() {
        var recipient = Session.getActiveUser().getEmail();
        GmailApp.sendEmail(recipient, 'Email from your site', 'You clicked a link!');
      }
    
  4. Retournez sur le site Google et modifiez une page. Saisissez un libellé qui deviendra un lien, tel que Click me, puis sélectionnez le texte et sélectionnez Insertion > Lien.

  5. Dans la boîte de dialogue qui s'affiche, cliquez sur Apps Script, puis sur la fonction sitesLink que vous venez de créer. Cliquez sur OK.

  6. Cliquez sur Enregistrer en haut de la page.

  7. Cliquez sur le lien que vous avez ajouté à la page.

  8. Une boîte de dialogue s'affiche et vous indique que le script nécessite une autorisation. Cliquez sur OK. Une seconde boîte de dialogue vous demandera ensuite l'autorisation d'accéder à des services Google spécifiques. Lisez attentivement la notification, cliquez sur Allow (Autoriser), puis sur Close (Fermer).

  9. Maintenant que le script est autorisé, cliquez à nouveau sur le lien que vous avez ajouté à la page. La fonction s'exécute maintenant. Consultez vos e-mails pour voir ceux que vous avez vous-même envoyés.