Cours Apps Script : feuilles et cellules

Maintenant que vous savez ce que sont les variables, les tableaux et que vous êtes capable d'effectuer des opérations simples, nous pouvons commencer à effectuer des actions sur les cellules d'un document Google Sheets.


Récupérer la valeur d'une cellule

Commencez par déclarer une constante qui va récupérer la feuille active :

const feuille = SpreadsheetApp.getActiveSheet();

Puis une constante pour la cellule A1 (celle de la feuille feuille) :

const cellule = feuille.getRange('A1');

Et pour terminer, utilisez la méthode getValue pour récupérer la valeur :

const valeur = cellule.getValue();

Pour vous aider, l'éditeur affiche les différentes méthodes de cet objet lorsque vous commencez à l'écrire :

apps script methodes objet liste valeurs cellules

Pour faire le test, entrez une valeur dans A1 puis tentez de la récupérer avec le code suivant :

const feuille = SpreadsheetApp.getActiveSheet();
const cellule = feuille.getRange('A1');
const valeur = cellule.getValue();

console.log(valeur); // Affiche la valeur de la cellule A1 de la feuille active

La valeur est alors correctement affichée.

Vous pouvez aussi entrer le numéro de ligne et de colonne (au lieu de "A1") dans la méthode getRange :

const feuille = SpreadsheetApp.getActiveSheet();
const cellule = feuille.getRange(1, 1);
const valeur = cellule.getValue();

console.log(valeur); // Affiche la valeur de la cellule à la ligne 1 et à la colonne 1 de la feuille active

Si vous souhaitez accéder à la valeur de A1 d'une autre feuille, entrez :

const feuille = SpreadsheetApp.getActive().getSheetByName('Feuille 2');
const cellule = feuille.getRange(1, 1);
const valeur = cellule.getValue();

console.log(valeur); // Affiche la valeur de la cellule à la ligne 1 et à la colonne 1 de la feuille "Feuille 2"

Récupérer les valeurs d'une plage de cellules

Pour récupérer une plage entière de valeurs (par exemple A1 à E2), c'est très similaire aux précédents codes mais vous devez ici utiliser getValues pour récupérer plusieurs valeurs (au lieu de getValue) :

const feuille = SpreadsheetApp.getActiveSheet();
const plage = feuille.getRange('A1:E2');
const tableau = plage.getValues();

console.log(tableau);

Pour cet exemple, les cellules contiennent des nombres :

cellules valeurs

Dans ce cas, console.log affichera ce résultat :

[ [ 1, 2, 3, 4, 5 ], [ 6, 7, 8, 9, 10 ] ]

Voici les mêmes données affichées différemment :

[
  [ 1, 2, 3, 4, 5 ],
  [ 6, 7, 8, 9, 10 ]
]

La méthode getValues retourne un tableau, contenant un tableau pour chaque ligne de la plage.

Pour afficher par exemple seulement la ligne 2 (donc les valeurs du tableau à l'indice 1), entrez :

console.log(tableau[1]); // Affiche : [ 6, 7, 8, 9, 10 ]

Et puisque tableau[1] correspond au tableau de la ligne 2, pour afficher seulement la première valeur de ce tableau, précisez la valeur que vous souhaitez obtenir en ajoutant [0] :

console.log(tableau[1][0]); // Affiche : 6
C'est un peu comme une grille où vous entrez le numéro de ligne dans le premier [] et le numéro de colonne dans le second [] (sans oublier que la première valeur est à 0).

Dans certains cas il peut être plus pratique "d'aplatir" tout ça pour obtenir un unique tableau avec toutes les valeurs, avec la méthode flat :

const feuille = SpreadsheetApp.getActiveSheet();
const plage = feuille.getRange('A1:E2');
const tableau = plage.getValues().flat();

console.log(tableau); // Affiche : [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ]