Les boucles dans Apps Script

Dans Apps Script, les boucles permettent de répéter un ensemble d’instructions plusieurs fois. Elles sont utiles pour automatiser des tâches répétitives, comme afficher une liste de noms ou effectuer des calculs sur des tableaux de données.

Pourquoi utiliser des boucles ?

Prenons un tableau contenant les noms d’une classe :

let noms = [
  "Sophie Martin",
  "Paul Dupont",
  "Lucas Moreau",
  "Élise Garnier",
  "Théo Durand",
  "Emma Leroy",
  "Nathan Petit",
  "Clara Roux",
  "Hugo Lefèvre"
];

Pour afficher tous ces noms, vous pourriez utiliser plusieurs appels successifs :

Logger.log(noms[0]);
Logger.log(noms[1]);
Logger.log(noms[2]);
Logger.log(noms[3]);
// ... jusqu'au dernier élément

Cependant, cette méthode devient inefficace pour de grandes quantités de données. Les boucles permettent de simplifier et d’optimiser ce processus.

Types de boucles dans Apps Script

Apps Script propose trois types principaux de boucles :

  • Boucle For : utilisée lorsque vous connaissez à l’avance le nombre d’itérations.
  • Boucle While : utilisée lorsque vous ne connaissez pas le nombre d’itérations, mais avez une condition pour arrêter la boucle.
  • Boucle Do…While : similaire à While, mais elle garantit au moins une exécution avant de vérifier la condition.

La boucle For

La boucle For est idéale pour parcourir un tableau. Exemple :

for (let i = 0; i < noms.length; i++) {
  Logger.log(noms[i]);
}

Décomposition :

  • Initialisation : La variable i est initialisée à 0.
  • Condition : Tant que i < noms.length est vraie, la boucle continue.
  • Incrémentation : i augmente de 1 à chaque itération.

La boucle While

La boucle While s’exécute tant qu’une condition est vraie. Exemple pour deviner un nombre secret :

function devinerNombre() {
  let essais = 0;
  let nombre = Math.floor(100 * Math.random());

  while (nombre !== 55) {
    essais++;
    nombre = Math.floor(100 * Math.random());
  }

  Logger.log("Trouvé en " + essais + " essais !");
}

Décomposition :

  • Condition : La boucle continue tant que nombre !== 55.
  • Incrémentation : La variable essais augmente à chaque itération.

La boucle Do…While

La boucle Do…While garantit au moins une exécution avant de vérifier la condition. Exemple :

function devinerNombre() {
  let essais = 0;
  let nombre;

  do {
    essais++;
    nombre = Math.floor(100 * Math.random());
  } while (nombre !== 55);

  Logger.log("Trouvé en " + essais + " essais !");
}

Différence entre While et Do…While

  • While : Vérifie la condition avant la première exécution.
  • Do…While : Exécute toujours le bloc de code au moins une fois avant de vérifier la condition.

Exemple comparatif :

// While : ne s'exécute jamais
let compteur = 10;
while (compteur < 10) {
  Logger.log(compteur);
  compteur++;
}

// Do...While : s'exécute une fois
let compteur = 10;
do {
  Logger.log(compteur);
  compteur++;
} while (compteur < 10);

Instructions Break et Continue

Les instructions break et continue permettent de contrôler l’exécution des boucles :

  • Break : Interrompt immédiatement la boucle.
  • Continue : Passe directement à l’itération suivante, sans exécuter le reste du bloc.

Exemple avec break :

for (let i = 0; i < 1000; i++) {
  if (i === 55) {
    break;
  }
  Logger.log(i);
}

Exemple avec continue :

for (let i = 0; i < 10; i++) {
  if (i % 2 === 0) {
    continue;
  }
  Logger.log(i); // Affiche uniquement les nombres impairs
}

Exemple avancé avec While et Break

Dans cet exemple, nous utilisons une boucle while pour deviner un nombre secret, avec une limite d’itérations pour éviter les exécutions infinies :

function devinerNombre() {
  let essais = 1;
  let nombre = Math.floor(100 * Math.random());

  while (nombre !== 55) {
    if (essais === 1000) {
      break; // Quitte la boucle après 1000 essais
    }
    essais++;
    nombre = Math.floor(100 * Math.random());
  }

  if (nombre !== 55) {
    Logger.log("Impossible de deviner le nombre secret en 1000 essais.");
  } else {
    Logger.log("Trouvé en " + essais + " essais !");
  }
}

Explication :

  • La boucle while s’arrête si le nombre 55 est trouvé ou si elle atteint 1000 itérations.
  • Une condition if vérifie si la boucle s’est arrêtée parce qu’elle a deviné le bon nombre ou parce qu’elle a atteint la limite.

Bonnes pratiques

  • Incluez toujours un moyen de sortir de la boucle pour éviter une exécution infinie.
  • Privilégiez la lisibilité : une boucle While avec une initialisation préalable peut parfois être plus claire.
  • Utilisez des noms de variables explicites pour rendre vos intentions claires.
  • Ajoutez des commentaires pour expliquer les conditions complexes des boucles.

Avec ces bases, vous pouvez écrire des scripts plus efficaces et adaptés à vos besoins. Choisissez le type de boucle en fonction de votre cas d’utilisation :

  • For : lorsque vous connaissez le nombre d’itérations.
  • While : lorsque vous ne connaissez pas le nombre d’itérations, mais savez quand arrêter.
  • Do…While : lorsque le code doit s’exécuter au moins une fois.

La suite du cours Apps Script avec l’article : Commentaires dans Apps Script