Cours Apps Script : les tableaux

Les tableaux sont des objets qui peuvent contenir un grand nombre de valeurs et qui vous seront particulièrement utiles en Apps Script ... Par exemple, lorsque vous chercherez à récupérer les valeurs d'une plage de cellules, vous obtiendrez un tableau, de même, lorsque vous voudrez insérer une ligne de données dans une feuille, vous devrez utiliser un tableau.

Les tableaux sont également très pratiques pour effectuer des actions un peu plus avancées telles que rechercher, traiter, trier et filtrer que nous verrons plus loin dans ce cours.


Créer un tableau

Pour créer un tableau vide, entrez [] et assignez ce tableau à une variable ou une constante :

const monTableau = [];

Vous pouvez également ajouter des valeurs à ce tableau, par exemple des valeurs numériques :

const listeNombres = [4.5, -45.6, 12.36, -7.31];

Ou des valeurs au format texte :

const motsCours = ['Cours', 'Apps', 'Script'];

Et bien d'autres types de valeurs, même des tableaux (mais nous y reviendrons plus tard).

Accéder aux valeurs

Voici un tableau contenant 3 valeurs :

const plageValeurs = ['Sheets', '-', 'Pratique'];

Pour accéder à une valeur d'un tableau, précisez son numéro entre []. Par exemple pour la première valeur, entrez :

const plageValeurs = ['Sheets', '-', 'Pratique'];
const texte1 = plageValeurs[0];

console.log(texte1); // Affiche : Sheets
Les valeurs d'un tableau sont numérotées en commençant par 0 (donc la première valeur est à l'indice 0, la seconde à 1, etc).

Modifier une valeur

De la même manière que pour accéder à une donnée d'un tableau, précisez l'indice de la valeur dans le tableau pour la modifier :

const plageValeurs = ['Excel', '-', 'Pratique'];
plageValeurs[0] = 'Sheets';

// Vous pouvez aussi afficher les données d'un tableau entier avec console.log()
console.log(plageValeurs); // Affiche : [ 'Sheets', '-', 'Pratique' ]

Vous pouvez aussi utiliser les valeurs stockées dans les variables pour compléter votre tableau (et inversement) :

const mot1 = 'Sheets';
const mot2 = '-';
const plageValeurs = [mot1, mot2, 'Pratique'];
const mot3 = plageValeurs[2];

console.log(plageValeurs); // Affiche : [ 'Sheets', '-', 'Pratique' ]
console.log(mot3) // Affiche : Pratique;

Et vous pouvez aussi entrer directement une opération pour que le tableau conserve son résultat :

const tabMois = ['Janvier', 'Février', 'Mars'];
const annee = 2024;
const tabMoisAnnee = [tabMois[0] + ' ' + annee, tabMois[1] + ' ' + annee, tabMois[2] + ' ' + annee];

console.log(tabMoisAnnee); // Affiche [ 'Janvier 2024', 'Février 2024', 'Mars 2024' ]: 

Valeur ou référence

Avant d'aller plus loin, une petite parenthèse sur les valeurs et les références ... Peut-être avez-vous remarqué que dans l'un des exemples précédents, le tableau a été assigné à une constante, l'une de ses valeurs a été modifiée et pourtant aucune erreur n'est apparue :

const plageValeurs = ['Excel', '-', 'Pratique'];
plageValeurs[0] = 'Sheets';

Pour mieux comprendre, essayez de deviner quelles seront les valeurs retournées par console.log pour ces 2 exemples :

let exemple1 = 10;
let exemple2 = exemple1;
exemple2 = 20;

// Quelle sera la valeur de exemple1 ?
console.log(exemple1);
let exemple1 = [10];
let exemple2 = exemple1;
exemple2[0] = 20;

// Quelle sera la valeur contenue dans exemple1 ?
console.log(exemple1);

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

Dans le premier code, la valeur de exemple1 vaut toujours 10, il n'y avait ici pas de piège.

Et dans le second code, la valeur contenue dans exemple1 est passée à 20 alors que cette variable ne semblait pas avoir été modifiée.

Dans le premier exemple, la valeur était de type primitif (qui sont les valeurs "simples" telles que les valeurs numériques, textes, booléennes, etc), la valeur a donc simplement été "copiée", il n'y avait aucun "lien" entre ces 2 variables.

Dans le second exemple, la valeur était un tableau ... Et lorsque l'opération exemple2 = exemple1 a eu lieu, exemple2 n'a pas reçu une copie du tableau mais la référence vers ce tableau. Les 2 variables avaient donc la référence vers le même tableau, donc si vous modifiez le tableau à partir de l'une, vous pourrez accéder aux modifications à partir de l'autre puisqu'il s'agit du même tableau (un peu comme si vous créez 2 raccourcis sur votre ordinateur vers un même fichier).

C'est aussi pour cette raison que vous pouvez assigner un tableau à une constante et modifier son contenu (car ce qui a réellement été assigné à la constante et que vous ne pouvez pas changer, c'est la référence au tableau et non son contenu).

Tout ceci est un peu technique, ne soyez pas inquiet si c'est encore un peu flou pour vous et revenez simplement sur cette page le jour où vous en aurez besoin.

Ajouter une valeur

Pour ajouter une valeur à la fin d'un tableau, utilisez la méthode push. Une "méthode" est le nom donné à une fonction d'objet que vous ajouterez ici à la suite de l'objet concerné (le tableau) :

const listeDeCourses = [];

listeDeCourses.push('pain');
listeDeCourses.push('sucre');
listeDeCourses.push('pommes');

console.log(listeDeCourses); // Affiche : [ 'pain', 'sucre', 'pommes' ]

// Vous pouvez aussi ajouter plusieurs valeurs à la fois
listeDeCourses.push('carottes', 'tomates', 'oignons');

console.log(listeDeCourses); // Affiche : [ 'pain', 'sucre', 'pommes', 'carottes', 'tomates', 'oignons' ]

Pour ajouter une valeur au début d'un tableau, utilisez la méthode unshift :

const listeDeCourses = ['carottes', 'tomates', 'oignons'];

listeDeCourses.unshift('pain');

console.log(listeDeCourses); // Affiche : [ 'pain', 'carottes', 'tomates', 'oignons' ]

Nombre de valeurs

Pour obtenir le nombre de valeurs contenues dans un tableau, utilisez la propriété length :

const listeDeCourses = ['carottes', 'tomates', 'oignons'];

listeDeCourses.push('pain');

console.log(listeDeCourses.length); // Affiche : 4

Dans cet exemple, console.log retourne 4 car le tableau contient 4 valeurs.

Vous savez déjà comment accéder à une valeur d'un tableau en fonction de son indice et comment obtenir le nombre de valeurs d'un tableau ... Trouvez maintenant une solution pour accéder à la dernière valeur du tableau (en utilisant la propriété length), avant de passer à la solution un peu plus bas :

const listeDeCourses = ['carottes', 'tomates', 'oignons'];

const derniereValeur = 

console.log(derniereValeur);

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

L'indice que vous devez renseigner ici est le nombre de valeurs du tableau - 1 car rappelez-vous, la numérotation des indices commence à 0 :

const listeDeCourses = ['carottes', 'tomates', 'oignons'];

const derniereValeur = listeDeCourses[listeDeCourses.length - 1];

console.log(derniereValeur); // Affiche : oignons

En utilisant cette solution (au lieu d'entrer directement l'indice 2), vous pourrez rajouter des valeurs au tableau sans devoir modifier le code :

const listeDeCourses = ['carottes', 'tomates', 'oignons'];

listeDeCourses.push('persil', 'poivrons');

const derniereValeur = listeDeCourses[listeDeCourses.length - 1];

console.log(derniereValeur); // Affiche : poivrons