Google App Script appliqué à Google Sheet – Variables, méthode getRange et boucle For

Dans le cadre de notre découverte de Google App Script (GAS), je vous propose de nous attarder sur deux éléments survolés lors du premier article Google App Script appliqué à Google Sheet – Premières fonctions : « Hello MyChromebook » : les variables et la méthode getRange().  Dans un deuxième temps, nous allons découvrir la boucle For qui nous permettra d’automatiser un certain nombre de tache très facilement.

Petit retour sur les variable :

Comme nous l’avons déjà vu, les variable nous servent à stocker de l’information. Et cette information peut-être de différentes natures : des nombres (entiers, nombres à virgule), des chaines de caractères (string), des objets (application, feuille de calcul, élément d’interface …). Nous avons aussi vu qu’une variable doit préalablement être déclarée dans notre code. Pour ce faire, nous utilisons le mot clé « var ». Enfin, nous lui affectons l’information souhaitée grâce au signe « = ».

Bon, jusque là rien de bien neuf. Quelques précisions toutefois :

  • Il est possible de déclarer plusieurs variables en même temps. Par exemple, nous pouvons en une seule ligne déclarer les variables a, b et c en saisissant dans notre code var a,b,c;
  • Comme dans l’exemple ci-dessus, il n’est pas obligatoire de leur affecter une valeur immédiatement. On peut le faire plus tard dans le code :

  • Les variables ont une portée. Pour faire simple, la portée de la variable c’est la partie du code dans laquelle la variable conserve sa valeur. Lorsque vous créez une variable dans une fonction, cette variable n’existe que dans cette fonction. Ainsi si vous appelez cette variable dans une autre fonction, vous obtiendrez un message d’erreur vous précisant que la variable n’a pas été déclarée. Par contre, si vous créez une variable en dehors de vos fonctions, on dira d’elle qu’il s’agit d’une variable globale. Si nous reprenons l’exemple ci-dessus, que nous créons la variable « d » à laquelle nous affectons la valeur « 50 », nous pourrons l’utiliser dans toutes les fonctions de notre code. Attention toutefois à ne pas abuser des variables globale. En effet, elles surchargent la mémoire de votre ordinateur inutilement si vous ne l’utilisez que dans une de vos fonctions. De plus, cela peut devenir une source de confusion. A utiliser avec parcimonie donc.

Je profite de cet exemple pour aborder un outils très souvent utilisé dans Google App Script : Logger.log(). Cette fonction permet d’envoyer une information dans le journal (log) et d’en afficher la valeur. Ici nous envoyons la variable « totale ».

Pour afficher le journal – après avoir sauvegardé puis exécuter notre script – il vous suffit de cliquer sur « Journaux » du menu « Affichage » :

Ainsi le log apparaît dans une fenêtre et nous affiche la valeur de notre variable « totale » :

On remarque immédiatement que notre total prend bien en compte la variable « d » qui a été définie en dehors de notre fonction.

Aller, un petit exercice pour appliquer quelques notions vues dans le premier article et celui. Je vous propose de créer une feuille de calcul « Sheet », et de placer la valeur « 1 » en « A1 ». L’objectif de notre script sera d’ajouter « 5 » à cette valeur.

Vous êtes prêts ? Alors à vos claviers. Vous avez 10 minutes ….

« Dring », c’est l’heure de rendre vos copie !

Alors, vous vous en êtes sorti ? En tout cas, voilà comment je vous propose de solutionner ce problème :

Vous aviez quelque chose de ce genre là ? Bravo !

Pour ceux qui ont galéré, voici quelques explications :

  • Comme nous l’avions vu dans l’article précédent, nous créons tout d’abord les variables « app » qui contient l’application Spreadsheet et la variable « feuille » qui contient la feuille de calcul active (ligne 2 et 3).
  • Dans un deuxième temps, nous créons la variable « somme » à laquelle nous affectons la valeur contenue dans la cellule « A1 » (ligne 4).  Vous aurez peut-être remarqué que je n’utilise pas la même notation pour getRange. Au lieu de getRange(« A1 »), j’ai utilisé getRange(1,1). Le premier chiffre correspond au numéro de la ligne, le second au numéro de la colonne. Cette façon d’utiliser la méthode getRange(), vous vous en rendrez compte à l’usure, s’avère plus souple et plus efficace.
  • Nous ajoutons 5  à notre variable grâce à somme = somme + 5 (ligne 5).
  • Enfin, nous replaçons le contenu de notre variable somme dans la cellule « A1 » (ligne 6).

getRange() :

Dans le petit exercice que nous venons de voir, vous avez vu que j’ai utilisé getRange() d’une autre manière par rapport à l’article précédent. En fait nous pouvons utiliser cette méthode de plusieurs façons :

  • En nommant la plage de cellule : getRange(« A1 ») ou getRange(« B3:H6 »)
  • En indiquant les coordonnées (numéro de ligne et numéro de colonne) de notre cellule ou de notre plage de cellule : getRange(1,1) ou getRange(3,2,3,6) pour reprendre le même exemple.

La seconde syntaxe de getRange s’avère beaucoup plus pratique dans nos codes. Elle permet de remplacer les chiffres placés dans la méthode getRange par des variables. Mais nous allons découvrir ça un peu plus bas. A noter que getRange(3,2,3,6) permet de viser toute une plage de cellule, tout comme getRange(« B3:H6 »).

La boucle For :

Imaginons que nous avons une série de chiffre, sur notre feuille de calcul, et que nous souhaitons faire comme dans l’exercice ci-dessus (ajouter 5), mais pour tous les chiffres  en même temps.  Pour cela, nous pourrions faire comme nous l’avons fait précédemment, et répéter l’opération nous même en changeant la cellule sur laquelle nous souhaitons travailler. Un peu laborieux non ?

Heureusement nous pouvons demander à notre script de le faire à notre place, et ce grâce à la boucle For.

Une boucle, c’est un ensemble d’instructions que notre code va réaliser jusqu’à ce qu’une condition – que nous lui indiquons – se produise.

Nous allons, aujourd’hui, explorer la boucle For (d’autre boucles existent que nous verrons ultérieurement) dont voici la syntaxe :

for (var i=0; i<7; i++) { instructions}

Détaillons ensemble ce charabia :

  • L’instruction « for » indique au code qu’une boucle for commence ici, avec les paramètres entrés entre parenthèse.
  • Le premier paramètre est la variable qui sera incrémentée par la boucle for : ici nous déclarons la variable « i », et nous lui attribuons la valeur 0.
  • Le second paramètre indique la condition qui doit être vérifiée comme « vrai » pour que la boucle continue à boucler. Inversement, si cette condition ne se vérifie plus, le code sort de la boucle. Dans notre exemple, nous vérifions que i<7. Tant que cette condition reste vrai, on boucle, dès que i=7, on sort de la boucle. Ici, on boucle donc 7 fois (pour i=0, i=1, i=2 …. i=6).
  • Le troisième paramètre (i++) est une incrémentation de « i ». Cela veut simplement dire que lorsque le programme boucle une fois, i est augmenté de 1. Nous aurions pu l’écrire aussi de cette façon : i = i+1.
  • les accolades ( {   } ) contiennent l’ensemble des instructions qui seront répétées par la boucle.

Appliquons immédiatement ce nouveau concept à notre exemple :

Détaillons ensemble ce code. Notez que je me suis servi des commentaires (le // en début de ligne) pour faire en sorte que le code ne tienne pas compte des lignes 4, 5 et 6, sans pour autant les supprimer, ce qui m’a permis de les copier / coller et de les réutiliser dans ma boucle :

  • Jusqu’à la ligne 7, rien de nouveau par rapport à ce que nous avions vu jusqu’ici. Je passe donc directement à la ligne 7.
  • Ligne 7 : je déclare la variable « somme » sans lui affecter de valeur.
  • Ligne 8 je déclare ma boucle « for » avec comme paramètres la variable « i » (que je déclare et à laquelle j’affecte la valeur « 0 »), la condition i<7 qui dit au programme de boucler tant que i est inférieur à 7, et i++ qui dit au programme d’ajouter 1 à chaque fois que la boucle …. boucle.
  • La ligne 9 où on affecte une valeur à la variable « somme ». Cette valeur est déterminée par la valeur de la cellule dont le numéro de ligne est i+1, et dont le numéro de colonne est 1. Au premier tour de la boucle, i=0, donc i+1 = 1. C’est donc la valeur de la cellule 1, 1 qui sera affectée à la variable « somme ». Au second tour, i a été incrémenté de 1, donc i = 1, et c’est la valeur de la cellule dont le numéro de ligne est i+1, c’est à dire 2, et dont le numéro de colonne est toujours 1. Cette opération est répétée jusqu’à ce que i=6 (cellule 7,1).
  • Ligne 10, on ajoute 5 à somme.
  • Ligne 11, on remplace avec setValue la nouvelle valeur de « somme » augmentée de 5 dans la cellule cible.

Pour m’assurer que j’ai été suffisamment clair, pouvez-vous me dire comment faire la même chose, mais au lieu de replacer la valeur de la cellule lue + 5 au même endroit, on mettrait le résultat dans la cellule à coté ? Autrement dit, comment mettre le résultat de « A1 + 5 » en « B2 ».

Vous avez trouvé ? Voici ma solution :

 

La boucle For est beaucoup utilisée, et rend de très nombreux services dans nos programmes Google App Script. Il est donc très important de bien la maîtriser.

C’est tout pour aujourd’hui. Je vous laisse digérer tout ça. N’hésitez pas à expérimenter ces différents concepts, car on ne le dira jamais assez, c’est en pratiquant qu’on comprend mieux ce qui se passe. N’hésitez pas non plus à me contacter si vous avez la moindre question. J’essaierai de vous répondre au mieux de mes connaissances.

Dernière petite question, si vous voulez bien m’accorder encore quelques secondes de votre temps. Je m’interroge sur la pertinence de résumer et ou de reprendre ces tutos en vidéo. Qu’en pensez-vous ? Serait-ce utile pour vous ? D’avance merci de vos retours, et à bientôt pour la suite !

Si vous avez trouvé une faute d’orthographe, informez-nous en sélectionnant le texte en question et en appuyant sur Ctrl + Entrée s’il vous plaît,.

Vous avez aimé cet article et voulez participer à la réussite de Mychromebook rendez-vous sur Tipeee en cliquant sur le bouton tip! pour devenir actif en devenant membre premium

tipeee-tip-btn Vous pouvez aussi nous aider via Paypal en suivant le lien Paypal

5 comments

  1. Arnaud Reply
    Bonjour,

    Merci pour ce tutoriel très intéressant.

    Avez vous des conseils à donner si l’on veut aller plus loin et parfaitement maîtriser Google App Script appliqué à Google Sheet ?

     

  2. casetou Reply
    Je vois pas bien l’intérêt des vidéos , c’est parfait comme ça.

    En revanche, les insertions d’images posent problème pour les copie -coller. Je veux bien recopier le code mais c’est pas simple de passer d’un onglet à l’autre. du coup , j’imprime l’image de tes exemples pour pouvoir recopier facilement.

    Une autre solution?

     

    Merci encore pour ton travail.

    • Nicolas Reply
      Effectivement, la prochaine fois nous ajouterons le texte plutot qu’une image, cela sera plus facile à copier.  Ceci dit le but du tutoriel est que tu puisse le reproduire toi même .. mais c’est entendu.

      merci pour ton retour

  3. casetou Reply
    Bonjour ,

    Très intéressant tes articles merci .

    En revanche , peux tu me dire comment tu fais les guillemets de « B3:H6 » car je trouve pas sur le clavier du chromebook.

    Merci

    Gilles

     

    • Nicolas Reply
      Attention lors du copié coller nous sommes passer sur un format de guillemet américain, pour nous tu utilisera les guillemets français avec la touche 3 (  » ) de ton clavier

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *