Nous avons vu, lors du précédent article ce qu’est Google App Script (GAS), ses possibilités, et ce à quoi il peut servir (voir Google App Script appliqué à Google Sheet – Introduction). Nous allons donc pouvoir commencer à mettre les mains dans le cambouis.
Je vous propose dans un premier temps de respecter la tradition en commençant par le célèbre « Hello World« , qui pour nous sera modifié en « Hello MyChromebook« . En effet il est d’usage dans la programmation de découvrir un langage en affichant dans l’interface utilisateur ce message « Hello World« , et ainsi de découvrir les bases de la structure et de la syntaxe d’un langage.
Or, et parce que chez MyChromebook.fr nous aimons vous gâter, ce n’est pas un programme Hello World que nous allons faire ensemble, mais deux :
- Nous allons afficher « Hello MyChromebook » dans une cellule d’une feuille Google Sheet
- Dans un deuxième temps nous allons afficher une boite de dialogue qui délivrera notre message
Google App Script la théorie
Mais avant, je suis obligé de faire un peu de théorie (un tout petit peu, je vous rassure), et vous parler de programmation orientée objet. Car Javascript, le langage utilisé dans Google App Script, est un langage de programmation orienté objet. Je ne vais pas vous faire ici un cours de ce qu’est un langage orienté objet, mais sachez toutefois que dans Javascript, tout est « objet ». N’hésitez pas à vous renseigner si le sujet vous intéresse.
La seule chose que je souhaite que vous reteniez, c’est que l’application Google Sheet est, dans le contexte de GAS un objet, qu’un fichier de Google Sheet (Spreadsheet) est un « sous-objet » de l’application, que la feuille « Feuille 1 » est un sous-objet de notre Spreadsheet, et que les cellules sont des sous-objets de notre feuille.
« Hello World » le premier script !
Mais vous verrez concrètement à quoi ces notions vont nous servir dès nos premières lignes de code. Trêve de blabla et passons aux travaux pratiques. Ouvrez Google Sheet et créez un nouveau classeur, que nous appellerons « Tuto-GAS-1 », puis rendez-vous dans le menu Outils – Éditeur de Script.
Et vous voici dans l’interface de Google App Script. Nous allons, là aussi, renommer ce fichier de Script en indiquant « Hello_MyChromebook » (en A).
Pour faire rapidement le tour de l’interface, et pour ne mentionner que ce qui nous sera utile dans un premier temps, nous avons :
- en B : le bouton enregistrer
- en C : le bouton Exécuter
- en D : la liste déroulante des fonctions créées dans notre script
- en E : la page de code où nous allons taper nos programmes
Commençons par modifier le nom de la fonction que nous allons créer, en remplaçant, sur la page de code, myFunction() par HelloMyChromebook (), puis enregistrez les modifications. Cela aura pour effet de rendre disponible notre fonction dans la liste déroulante des fonctions D.
À noter que nous déclarons toutes les fonctions dans GAS avec la même syntaxe :
le mot clé function, le nom de la fonction suivi de parenthèses. Le code de cette fonction est mis entre { }.
Dans cette fonction, nous allons déclarer à Google App Script que nous allons travailler dans l’application SpreadSheet. Pour cela nous allons créer une variable qui contiendra l’objet application SpreadSheet. Pour ce faire nous utilisons le mot clé var :
var app = SpreadsheetApp ; |
Bien entendu, vous pouvez utiliser n’importe quel autre nom de variable. Il faut juste que ce nom de variable ne corresponde pas à un mot clé du langage, qu’il ne contienne pas d’espace, et qu’il ne commence pas par un chiffre. Autre point important à noter, c’est que chaque ligne d’instruction dans GAS doit se terminer par un « ; » .
Ce que nous cherchons à faire, c’est faire apparaître « Hello MyChromebook » dans la cellule A1 de la feuille 1 de notre classeur « Tuto-GAS-1 ». Nous allons donc successivement créer des variables pour notre classeur et notre feuille :
var classeur = app.getActiveSpreadsheet() ; var feuille = classeur.getActiveSheet(); |
Comme vous le constatez, nous utilisons la variable créée précédemment, nous la faisons suivre d’un « . » et nous utilisons les méthodes associées « getActiveSpreadsheet() » et « getActiveSheet() ». On pourrait traduire en Français ces 2 lignes ainsi : Je déclare la variable classeur, et j’y met le classeur actif de l’application « app ». Je déclare la variable feuille, et j’y met la feuille active du classeur « classeur ».
Ça va ? Je ne vous ai pas perdu ? Pour vous aider, revenez à l’illustration en haut de l’article.
Il ne nous reste plus qu’à modifier le contenu de la cellule A1 de notre feuille « feuille ». Pour cela nous allons utiliser la méthode « setValue() » :
feuille.getRange(« A1 »).setValue(« Hello MyChromebook »); |
Ici nous demandons à GAS de prendre la cellule A1 (getRange(« A1 »)) et on lui demande d’y mettre la valeur souhaitée (setValue(« Hello MyChromebook »)).
Voilà à quoi ressemble notre fonction HelloMyChromebook() maintenant :
Vous allez me dire, c’est pas pratique de se souvenir de la syntaxe de toutes ces méthodes, et de leurs imbrications. Mais heureusement, l’interface de Google App Script nous y aide. En effet lorsque vous indiquez un objet à GAS, par exemple l’objet SpreadSheet « classeur », et que vous saisissez le « . » essayez les touches « ctrl + espace » : une liste des méthodes associées à cet objet vous est proposée.
Pratique non ? De même si vous commencez à saisir le début de la méthode souhaitée (par ex : classeur.get) et que vous appuyez sur ctrl + espace, la liste se réduit.
Et bien testons notre script ? qu’en pensez-vous ?
Pour cela, cliquez sur le bouton « enregistrer » B de l’interface pour enregistrer notre script, puis sur le bouton C « exécuter ».
Normalement vous devriez avoir des fenêtres de ce genre là qui apparaissent :
En effet, Google demande systématiquement l’autorisation à l’utilisateur pour l’exécution d’un script. Mais je vous rassure, il ne le demande qu’une seule fois pour chaque fichier script. Il ne le demandera plus pour notre script « .
Et voilà ! vous avez réussit à modifier, via le langage GAS une cellule de votre feuille Sheet. Cool, non ?
Afficher un message dans un Pop-up avec Google Apps Script
Voyons maintenant comment afficher le même message, mais dans une fenêtre « pop-up ». Tout d’abord nous allons demander GAS de ne plus tenir compte de notre dernière instruction. Pour cela nous allons la mettre en « commentaire ». Les commentaires sont utilisés par les codeurs pour écrire du texte qui n’est pas lu par l’interpréteur du langage. Un bon moyen pour se laisser des explications sur le pourquoi de tel ou tel fonction ou sur tel morceau du programme. Ces commentaires sont aussi utilisés pour faire en sorte que les fonctions que vous écrirez soient comprises par d’autres codeurs. Enfin, et comme dans notre cas, cela permet de faire en sorte que certaines lignes ne soient plus lues lors de l’exécution de la fonction, sans toutefois les effacer.
Pour mettre en commentaire une ligne, il vous suffit de mettre deux barres obliques au début de celle-ci :
// feuille.getRange(« A1 »).setValue(« Hello MyChromebook »); |
Pour faire apparaître une fenêtre pop-up, nous allons utiliser « alert() » de « getUi() » comme suit :
Comme vous pouvez le constater, getUi() se trouve directement dans les fonctions de l’application. Alert() est une des méthodes proposée par getUi().
Exécutez la fonction ainsi modifiée, et lorsque vous retournerez sur Google Sheet, vous verrez la fenêtre suivante :
Voilà pour cette première approche de Google App Script appliqué à Google Sheet. Même si les fonctions que nous avons étudié ensemble paraissent très basiques, et sans grand intérêt, nous avons vu beaucoup de principes de bases essentiels pour la suite :
- L’interface
- L’organisation des objets
- La syntaxe globale
- Les variables
- Les autorisations
- Les commentaires
N’hésitez pas à commenter l’article si j’ai été trop vite sur certains concepts, si je n’ai pas été très clair dans mes explications, ou si vous n’avez pas compris tel ou tel point. J’essaierai de préciser au mieux les choses, dans la limite de mes connaissances et de mes capacités.
En tout cas, et pour ceux que ça intéresse toujours, je vous donne rendez-vous bientôt pour la suite.
Bonjour ! Merci pour ce tutoriel vraiment très intéressant. J’ai une question peut être un peu plus avancé… Mais j’ai crée mon script qui fonctionne super bien dans un document, par contre quand je test mes fonctions dans un autre document, ça ne fonctionne pas.
Est-ce qu’il existe un moyen de pouvoir avoir un script par défaut qui s’active sur tout les documents/classeur de notre drive lorsqu’on crée une nouvelle feuille ? Ou au moins pouvoir partager un script entre plusieurs feuilles.
J’utilise quelques fonctions et je met à jour mon document. Le soucis c’est que j’aimerai pouvoir modifier une seul fois ma fonction et qu’elle soit active sur TOUT mes documents ! Car actuellement, je dois modifier mon script sur chaque feuille.. Et c’est long.
Vous savez si c’est possible ?
Merci encore.
tu peux exporter ton script sur chaque documents, mais a ma connaissance il faut le faire un à un et à la main .. désolé
Merci pour cette introduction, très utile !
Bonjour,
J’aurais aimé savoir s’il était possible de passer un paramètre dans une fonction.
Exemple :
function Recherche_nom(nom){//corps du programme}
Merci,
Nicolas
Bonjour Olivier
Je suis novice et je souhaiterais éditer et assigner un script à un bouton de navigation
mon but final est que mon classeur se mette à ressembler a un logiciel de traitement
cependant après de multiples recherches , je ne parviens à trouver aucun forum,site, tuto ou video youtube en français dédié à ce sujet , aurais tu des conseils ou un lien intéressant à me proposer
tu es mon dernier espoir avant résignation
Merci d’avance
Bonsoir,
Je me lance, comme beaucoup ayant un ChromeBook, sur Sheets et travaillant Excel, la transition se fait en douceur non sans mal, mais ce n’est pas le but du commentaire.
Avec VBA, je me soucie pas trop de la casse lors de la saisie de mon code.
Or les erreurs que j’ai en suivant cette première leçon, c’est que contrairement à VBA, il est nécessaire de saisir la casse sous peine d’instructions non reconnues.
Merci pour cette leçon et je profite de ce comm. pour te remercie pour le site de manière générale.
Bonjour Olivier,
merci pour ta réponse. J’ai compris d’où venait le problème.J’ai copié ta phrase sur ton blog, je ne l’ai pas retapée. Or sur ton blog ta phrase est écrite avec « et pas avec « ….
après correction, ça fonctionne…
A bientôt pour la suite.
Les guillemets en copié / Coller sont souvent mis au format américain .. d’ou le soucis.. si tout fonctionne maintenant c’est parfait .. bon codage alors :)
Merci beaucoup pour ce premier cours.
Pour moi tout fonctionne, j’ai eu des erreurs car j’avais oublié des majuscules dans certaines fonctions.
J’ai hâte de passer au cours merci, merci, c’est passionnant
Bonjour
pour ce 1er cours, j’ai déjà un message d’erreur…
avec feuille.getRange(«A1»).setValue(«Hello MyChromebook»);
j’ai
Caractère incorrect. (ligne 6, fichier « Code »)
et le script ne fonctionne pas
merci d’avance
Bonjour Joseph,
Tout d’abord, merci d’avoir suivi ce tuto. Les erreurs de syntaxe sont toujours les plus nombreuses, mais aussi les plus casse pieds. Lorsque je lis la ligne qui te pose problème, ce qui me frappe de suite, c’est que tu utilise les guillemets à la française «A1» et «Hello MyChromebook». Or il s’agit des guillemets sous le 3 du clavier de type « »
Peux-tu me le confirmer ?
Si ce n’est pas le cas, n’hésite pas à m’envoyer une copie d’écran de ton code que je le regarde plus en détail.
Olivier.