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 :

  1. Nous allons afficher « Hello MyChromebook » dans une cellule d’une feuille Google Sheet
  2. 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.

Shares:

11 Comments

  • crusty
    crusty
    4 octobre 2019 at 15 h 13 min

    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.

    Reply
    • Nicolas
      4 octobre 2019 at 21 h 13 min

      tu peux exporter ton script sur chaque documents, mais a ma connaissance il faut le faire un à un et à la main .. désolé

      Reply
  • thomas
    thomas
    23 juin 2018 at 14 h 48 min

    Merci pour cette introduction, très utile !

    Reply
  • LEBLANC
    LEBLANC
    11 avril 2018 at 16 h 29 min

    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

    Reply
  • DIDINE
    DIDINE
    25 février 2018 at 9 h 06 min

    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

    Reply
  • Stéphane
    Stéphane
    14 septembre 2017 at 20 h 32 min

    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.

    Reply
  • Joseph
    Joseph
    4 septembre 2017 at 10 h 55 min

    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.

    Reply
    • Nicolas
      4 septembre 2017 at 13 h 59 min

      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 :)

      Reply
  • Tom Kratos
    Tom Kratos
    2 septembre 2017 at 15 h 21 min

    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

    Reply
  • Joseph
    Joseph
    30 août 2017 at 9 h 04 min

    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

    Reply
    • Olivier
      Olivier
      2 septembre 2017 at 15 h 34 min

      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.

      Reply

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.