Épisode 1 : Les fonctions personnalisées

Il nous arrive régulièrement dans nos articles de parler de Google Apps Script, le langage de programmation développé par Google pour interagir avec ses outils et les améliorer, mais savez-vous toutes les possibilités qu’il offre ? Certes, l’outil demande une certaine expertise technique pour être pleinement utilisé, mais des choses très simples sont aussi à la portée de beaucoup d’utilisateurs sans avoir besoin de passer des heures à lire une documentation obscure sans en comprendre un mot.

Tel est donc le but de cet article, premier d’une série sur Google Apps Script : vous faire découvrir tout le potentiel de ce langage et tout ce que vous pouvez réaliser avec. C’est parti !

Raccorder le GAS à votre classeur Google Sheets

Avant de rentrer dans le vif du sujet, une présentation succincte : Google Apps Script est un langage de programmation développé par Google, comme dit plus haut. Il est complètement basé sur Javascript, au point que pour beaucoup, il n’y a pas de différence entre les langages. L’intérêt est évidemment que Google a rajouté le code nécessaire pour accéder à son écosystème, que ce soit Google Docs, Google Drive, Gmail, ou le plus courant : Google Sheets.

Google Apps Script, abrégé en GAS, est de fait très souvent comparé au fameux VBA utilisé pour enrichir les fichiers Excel. Et si la comparaison tient en surface, il faut noter que le GAS offre des possibilités radicalement différentes, avec un langage qui est, de fait, bien plus facile d’accès de nos jours que le VBA. Un fait qui d’ailleurs n’a pas échappé à Microsoft : ils ont annoncé l’année dernière la fin du VBA, qui sera remplacé à terme par Office Script, leur propre langage de programmation, lui aussi basé sur… Javascript.

Mais tout ceci ne nous dit pas comment mettre du Google Apps Script dans un Google Sheets. Faisons donc cela, c’est extrêmement rapide ! Dans un premier temps, créez donc un fichier Google Sheets dans votre Drive. Puis rendez-vous tout simplement dans Extensions > Apps Script.

Emplacement de Apps Script dans le menu Extensions de Google Sheets
Une capture d’écran montrant l’accès à Apps Script dans Google Sheets par le menu Extensions

Une fois que vous cliquez sur Apps Script. Un nouvel onglet s’ouvre automatiquement. Après quelques instants de chargement, c’est fait : vous avez créé un projet Apps Script automatiquement lié à votre Google Sheets !

Nouveau projet Google Apps Script
Votre tout nouveau projet Apps Script.

Votre première fonction personnalisée

Nous allons désormais créer notre première fonction personnalisée. Mais qu’est-ce qu’une fonction personnalisée ? Eh bien, comme son nom l’indique, c’est une fonction que vous pouvez utiliser dans Google Sheets comme SOMME, RECHERCHEX ou EQUIV, mais à la différence de celles-ci, c’est vous qui écrivez le code ! 

Pour notre toute première fonction personnalisée, nous allons faire une fonction très simple : la fonction BONJOUR. Pour le moment, elle ne fait rien de particulier et doit juste renvoyer la chaîne de caractères « Bonjour ! ». Pour réaliser cette fonction toute simple, remplacez le code dans votre éditeur, qui est par défaut celui-ci :

function myFunction() {
}

Par celui-là :

function BONJOUR(){
  return "Bonjour !";
}

Pensez à cliquer sur l’icône de disquette (voilà qui ne nous rajeunit pas) pour sauvegarder votre projet, ou bien utilisez le raccourci adéquat (Ctrl+S sous Windows, Cmd+S sous Mac). Contrairement à la majorité des outils de Google, Apps Script ne sauvegarde pas votre code automatiquement, il faut prendre le réflexe de le faire soi-même pour que les modifications soient prises en compte ! Les fichiers modifiés mais non sauvegardés ont une pastille orange en face de leur nom pour vous rappeler de le faire.

Icône orange "Sauvegarder le projet" dans Google Apps Script
L’icône pour enregistrer votre projet se trouve dans la barre d’outils de l’éditeur. 

Retournez dans l’onglet correspondant à votre classeur Google Sheets puis allez dans n’importe quelle cellule et tapez la formule : =BONJOUR(). Après un petit temps de chargement, le texte « Bonjour ! » devrait apparaître.

Fonction "Bonjour" grâce à Apps Script
Écrire la formule =BONJOUR() dans Sheets vous donnera le message « Bonjour ! ».

Et voilà, vous avez réalisé votre première fonction personnalisée ! Mais c’est un peu limité.

Améliorons-la un peu.

Un bonjour argumenté et commenté

Notre première modification va être de permettre de mettre des arguments dans notre fonction, de sorte que lorsque quelqu’un met quelque chose entre les parenthèses de la fonction, on ajoute ce quelque chose à notre message. En d’autres termes, =BONJOUR(“Quentin”) devrait renvoyer « Bonjour Quentin ! ».

Modifiez le code de votre fonction pour celui-ci :

function BONJOUR(prenom){
  return "Bonjour " + prenom + " !";
}

Désormais, si vous changez votre fonction en ajoutant un argument, vous obtiendrez le message voulu :

Écrire =BONJOUR(“Quentin”) vous donnera désormais en résultat « Bonjour Quentin ! ».

Une autre amélioration est d’offrir une aide contextuelle, comme pour les autres fonctions de Google Sheets, car pour le moment vous avez le message “Fonction inconnue” lorsque vous tapez votre fonction, ce qui n’est pas l’idéal. Pour cela, rien de plus simple : il suffit d’écrire un commentaire particulier avant notre fonction afin d’enrichir automatiquement l’aide de Google Sheets ! Modifiez de nouveau votre code comme ceci :

/**
 * Une fonction simple qui renvoie un message de salutations pour une personne.
 *
 * @param {"Quentin"} prenom Le prénom de la personne à saluer. Cela peut être une chaîne de caractères ou la référence d’une cellule !
 *
 * @customfunction
 */

function BONJOUR(prenom){
  return "Bonjour " + prenom + " !";
}

La partie en vert est un commentaire (c’est même un type de commentaire particulier, un commentaire JSDoc) et n’a aucune valeur pour le code en lui-même. Cela sert juste à expliciter un peu plus votre code pour un être humain qui le lirait, et, dans le cas particulier ici de Google Sheets, grâce à la ligne @customfunction, cela ajoute aussi ce commentaire en tant qu’aide pour votre utilisateur !

Fonction avec aide contextuelle avec Apps Script
Lorsque l’on écrit la formule =BONJOUR(A3) dans notre Sheets, une aide contextuelle apparaît désormais, similaire à celles natives de Google Sheets !

Aller plus loin avec Google Apps Script

Si vous testez un peu plus cette fonction, vous vous rendrez vite compte qu’elle a des limitations. Par exemple, comment réagit-elle lorsque vous mettez une plage de cellules ? Ou lorsque vous ne mettez plus d’argument en entrée ? Ces cas demandent chacun des lignes de code particulières, un peu plus complexes que les lignes simples que nous avons écrites ici.

Mais si cela vous intéresse, n’hésitez pas à suivre une formation avec Numericoach, nous formons même les plus humbles débutants à Apps Script, et en une session vous serez déjà capables d’écrire des fonctions personnalisées répondant à nombre de vos besoins !

Si vous le souhaitez, vous pouvez aussi voir un peu plus des possibilités offertes par Apps Script en (re)découvrant ce double article sur les macros et leur lien avec Google Apps Script. Et si vous en voulez plus, n’hésitez pas à suivre cette série de cours en lisant les pages suivantes !