Cours Apps Script : les conditions

Les conditions sont très utiles et permettent d'effectuer des actions (ou non) en fonction d'une ou de plusieurs conditions.

Un peu comme la fonction SI de Google Sheets mais bien plus pratique encore.


If

Pour exécuter une ou plusieurs lignes de code sous condition, entrez if suivi de la condition entre () et des instructions à exécuter entre {} si la condition est vraie.

Voici un exemple de code qui va commencer par récupérer la valeur de A1, puis vérifier si cette valeur est vide, et seulement si la condition est vraie, entrer "A compléter" dans la cellule A1 :

const celluleA1 = SpreadsheetApp.getActiveSheet().getRange('A1');
const valeurA1 = celluleA1.getValue();

if (valeurA1 == '') {
  celluleA1.setValue('A compléter');
}

Else

Pour effectuer une autre action si la condition est fausse, ajoutez else suivi des instructions entre {} :

const celluleA1 = SpreadsheetApp.getActiveSheet().getRange('A1');
const valeurA1 = celluleA1.getValue();

if (valeurA1 == '') {
  celluleA1.setValue('A compléter');
} else {
  console.log('Cellule A1 non vide');
}

Else if

Pour ajouter des conditions intermédiaires, ajoutez else if suivi de la condition entre () et des instructions entre {} :

const celluleA1 = SpreadsheetApp.getActiveSheet().getRange('A1');
const valeurA1 = celluleA1.getValue();

if (valeurA1 == '') {
  celluleA1.setValue('A compléter');
} else if (valeurA1 > 0) {
  console.log('Valeur = ' + valeurA1);
} else {
  console.log('Valeur non valide');
}

Notez que vous pouvez ajouter plusieurs instructions else if si nécessaire et que l'instruction else est facultative.

Opérateurs de comparaison

Voici la liste des opérateurs de comparaison que vous pouvez utiliser dans vos conditions :

==est égal à(test de la valeur)
===est égal à(test de la valeur + du type)
!=est différent de(test de la valeur)
!==est différent de(test de la valeur + du type)
<est plus petit que
<=est plus petit ou égal à
>est plus grand que
>=est plus grand ou égal à

La différence entre l'opérateur == et === est que le second vérifie également si le type de données est le même. En voici un exemple :

const valeur1 = 10;
const valeur2 = '10';

if (valeur1 == valeur2) {
  console.log('Test A'); // Affiché car valeurs identiques
}
if (valeur1 === valeur2) {
  console.log('Test B'); // Non affiché car types différents (valeur1 = numérique, valeur2 = texte)
}

Lorsque vous hésitez entre l'utilisation de == ou ===, choisissez plutôt le second.

Et

Pour ajouter plusieurs conditions à la fois et vérifier si elles sont toutes vraies, utilisez l'opérateur && (l'équivalent de la fonction Google Sheets ET) :

const nombre = 45;

if (nombre > 0 && nombre <= 100) {
  console.log('Nombre dans la plage 1 à 100'); // Affiché car les 2 conditions sont vraies
}

Ou

Pour ajouter plusieurs conditions à la fois et vérifier si au moins une condition est vraie, utilisez l'opérateur || (l'équivalent de la fonction Google Sheets OU) :

const nombre = 234;

if (nombre < 100 || nombre >= 200) {
  console.log('Nombre hors de la plage 100 à 199'); // Affiché car une des 2 conditions est vraie
}

Non

Pour commencer, rappelez-vous que les instructions sont exécutées seulement si la condition est vraie (true), il est donc généralement inutile de préciser == true :

const test = true;

if (test == true) {
  console.log('"test" est vrai'); // Affiché
}

Vous pouvez ici simplement l'écrire comme ceci :

const test = true;

if (test) {
  console.log('"test" est vrai'); // Affiché
}

Si dans ce cas vous cherchez à savoir si c'est faux, précisez == false (ou === false) :

const test = false;

if (test === false) {
  console.log('"test" est faux'); // Affiché
}

Le message est ici affiché car la condition est vraie (la condition demande si "test" est égal à "false", ce qui est vrai).

Une autre manière de le faire est d'utiliser l'opérateur ! (l'équivalent de la fonction Google Sheets NON) qui va retourner la valeur booléenne inverse (autrement dit "true" deviendra "false", "false" deviendra "true") :

const test = false;

if (!test) {
  console.log('"test" est faux'); // Affiché
}

Opérateur ternaire

Voici un exemple qui ajoute "enfant" ou "adulte" à la variable texte en fonction de l'âge :

const age = 12;
let texte = 'Tarif appliqué : ';

if (age < 16) {
  texte += 'enfant';
} else {
  texte += 'adulte';
}

console.log(texte); // Affiche : "Tarif appliqué : enfant"

Ce type de condition peut être simplifié sur une ligne à l'aide de l'opérateur ternaire, en entrant la condition ? valeur si vrai : valeur si faux (un peu comme la fonction SI de Google Sheets) :

const age = 12;
let texte = 'Tarif appliqué : ';

texte += age < 16 ? 'enfant' : 'adulte';

console.log(texte); // Affiche : "Tarif appliqué : enfant"

Ou plus court encore :

const age = 12;
const texte = 'Tarif appliqué : ' + (age < 16 ? 'enfant' : 'adulte');

console.log(texte); // Affiche : "Tarif appliqué : enfant"

Libre à vous d'utiliser l'opérateur ternaire ou les instructions if/else dans un cas comme celui-ci.