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 associé à une fonction dans un script. (Dans Google Forms, seuls les éditeurs qui ouvrent le formulaire peuvent le voir, et non les utilisateurs qui l'ouvrent 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, sauf si vous utilisez la nouvelle version, vous devez utiliser la syntaxe addMenu() à la place. Les sous-menus ne sont pas disponibles. 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 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 le menu à l'avenir si une certaine 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 vous 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 le code dans l'éditeur de scripts et collez-le ci-dessous.
    function showMessageBox() {
    Browser.msgBox('You clicked it!');
    }
  3. Revenez à Sheets et insérez une image ou un dessin en sélectionnant Insérer > Image ou Insérer > 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. Cliquez sur OK.
  6. Cliquez à nouveau sur l'image ou le dessin. La fonction va maintenant s'exécuter.

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 vous montre comment procéder.

  1. Sur un site Google, cliquez sur Plus > Gérer le site.
  2. Dans la barre latérale, cliquez sur Apps Script (Scripts Apps), puis sur Add new script (Ajouter un script) pour créer un script lié au site.
  3. Supprimez le 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. Revenez au site Google et modifiez une page. Saisissez un libellé qui deviendra un lien, par exemple Click me, puis mettez le texte en surbrillance et sélectionnez Insérer > 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 demandera alors une autorisation pour des services Google spécifiques. Lisez attentivement la notification, cliquez sur Autoriser, puis sur Fermer.
  9. Maintenant que le script est autorisé, cliquez à nouveau sur le lien que vous avez ajouté à la page. La fonction va maintenant s'exécuter. Consultez vos e-mails pour voir ceux que vous avez envoyés.