1. Livres & vidéos
  2. Google Apps Script
  3. Les classeurs et introduction à SpreadsheetApp
Extrait - Google Apps Script Créez vos outils pour automatiser Google Workspace
Extraits du livre
Google Apps Script Créez vos outils pour automatiser Google Workspace Revenir à la page d'achat du livre

Les classeurs et introduction à SpreadsheetApp

Introduction

Passons maintenant à la pratique, avec l’un des terrains de jeu les plus puissants d’Apps Script : Google Sheets.

Avant d’écrire la moindre ligne de code, il est essentiel de bien comprendre comment est structuré un fichier Google Sheets. Cette compréhension facilitera grandement l’utilisation du service SpreadsheetApp et de ses classes par la suite.

Comprendre la structure d’un classeur Google Sheets

1. Le classeur (Spreadsheet)

Un classeur Google Sheets est un fichier de feuilles de calcul hébergé en ligne par Google. Il peut contenir une ou plusieurs feuilles (parfois appelées onglets). Chaque classeur possède un identifiant unique (ID) visible dans l’URL du navigateur :

images/08RI01.png

L’ID du classeur est la longue suite de lettres et de chiffres qui se trouve entre /d/ et /edit. C’est grâce à lui que l’on peut accéder au fichier par script, même s’il n’est pas actif.

Dès que vous créez un nouveau document dans Google Sheets, l’interface du classeur s’affiche. Voici un exemple simple de tableur :

images/08RI02.png

2. Les feuilles (Sheets)

Chaque classeur peut contenir plusieurs feuilles de calcul, identifiables par leurs noms uniques :

Exemple : "Feuille1", "Feuille2"…

Un classeur peut contenir jusqu’à 200 feuilles !

Vous pouvez naviguer facilement entre les différentes feuilles d’un classeur grâce aux onglets situés en bas de l’interface. Si certaines feuilles sont masquées ou trop nombreuses, cliquez sur l’icône images/3lignes.png pour ouvrir le menu déroulant qui affiche la liste complète, y compris les feuilles cachées.
images/08RI03.png

3. Les plages de données (Ranges)

Descendons encore d’un niveau avec les plages...

SpreadsheetApp et ses classes principales

Maintenant que la structure d’un document Google Sheets est bien comprise, nous pouvons entrer dans le vif du sujet : le serviceSpreadsheet et sa classe parente SpreadsheetApp.

Le service Spreadsheet est un service natif de Google Apps Script, spécialement conçu pour interagir par script avec les feuilles de calcul. Grâce à lui, vous pouvez accéder à vos classeurs, parcourir vos feuilles, lire et modifier des plages de données, et bien plus encore.

SpreadsheetApp agit comme un point d’entrée : cette classe parente permet de récupérer un classeur, puis d’en manipuler les feuilles (sheets) et les plages de cellules (ranges).

Pour travailler efficacement avec SpreadsheetApp, il est essentiel de comprendre les trois classes : spreadsheet, sheet et range.

1. Les classes SpreadsheetApp et Spreadsheet

En tapant SpreadsheetApp. dans l’éditeur de script, vous verrez s’afficher une liste complète des méthodes proposées par ce service. La classe SpreadsheetApp, en tant que classe parente, fournit des méthodes essentielles pour démarrer toute interaction avec Google Sheets.

images/08RI05.png

Parmi celles-ci, on retrouve notamment :

  • des méthodes pour accéder à des éléments actifs, comme la feuille active, le classeur actif ou même la sélection actuelle de l’utilisateur...

Récupérer une feuille et lire son contenu

Nous avons vu précédemment comment accéder à un classeur, puis à une feuille, et enfin à une plage de cellules à l’aide d’Apps Script.

Dans cette section, nous allons passer à un cas d’usage concret : comment récupérer efficacement les données d’une plage, et quelles sont les subtilités apportées par la classe Range dans les différentes méthodes de lecture.

1. La méthode getValue() et ses limites

Parmi les méthodes les plus simples et utilisées en Apps Script, getValue() est un incontournable.

Lorsqu’elle est appliquée à une plage de données, elle renvoie le contenu de la cellule située en haut à gauche de cette plage. Selon le format de donnée de cette cellule, la valeur retournée peut être un nombre, un booléen, une date ou un texte. Si la cellule est vide, la méthode renverra simplement une chaîne vide ("").

Prenons un exemple.

Voici un classeur, avec de la donnée en Sheet1. Nous avons des noms en colonne A, l’âge en colonne B, et la ville en colonne C.

Je souhaite récupérer avec Apps Script la ville dans laquelle se trouve Bruno.

images/08RI10.png

Une première approche, souvent intuitive chez les débutants, consisterait à boucler ligne par ligne et, pour chaque ligne, à lire la cellule de la colonne A avec getRange(...).getValue() pour vérifier si le prénom est « Bruno ».

Voici donc ce que l’on pourrait être tenté d’écrire :

images/08RI11.png

D’après les logs, le script retourne bien l’information recherchée. Alors pourquoi est-ce une mauvaise idée ?

Lorsque l’on développe avec Apps Script, la règle d’or, c’est de limiter au maximum les appels à la feuille. Chaque appel déclenche une requête vers le serveur, ce qui ralentit fortement le script.

Analysons de plus près le script présenté.

Dans un premier temps, on récupère le classeur actif puis la feuille qui nous intéresse. Cet appel est indispensable et difficile à optimiser.

function findBrunosCity_slow() { 
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1");...