Les tableurs au travail
Qu’est-ce que GAS (Google Apps Script) ?
Automatiser Google Sheets : le guide pour débutants
Remettre chaque semaine un tableau dans la même forme. Supprimer les lignes vides de données collées. Marquer les lignes qui remplissent une condition. Les tableurs regorgent de tâches aux étapes fixes.
C’est GAS (Google Apps Script) qui permet d’exécuter ces tâches automatiquement. Cet article explique ce que GAS sait faire, par où commencer et comment franchir les écrans d’« autorisation » qui bloquent beaucoup de monde la première fois.
Qu’est-ce que GAS ?
GAS est la solution de Google pour exécuter des programmes. Il utilise la même syntaxe que JavaScript et pilote Google Sheets mais aussi Gmail, Google Agenda, Google Drive et Google Forms.
Il suffit d’un compte Google. C’est gratuit et rien à installer : ouvrez une feuille dans le navigateur et commencez à écrire. Votre programme s’exécute sur les serveurs de Google, pas sur votre ordinateur.
Macros enregistrées et GAS
Google Sheets propose des « macros » qui enregistrent vos actions pour les rejouer à volonté. Lancez l’enregistrement avec « Extensions » → « Macros » → « Enregistrer une macro », sélectionnez et tapez dans des cellules : vos actions sont enregistrées sous forme de code GAS.
/** @OnlyCurrentDoc */
function myFunction() {
var spreadsheet = SpreadsheetApp.getActive();
spreadsheet.getRange('B2').activate();
spreadsheet.getCurrentCell().setValue('test');
spreadsheet.getActiveRangeList().setFontWeight('bold');
};Autrement dit, une macro, c’est du GAS. Même si vous la nommez par exemple « Test gras », la fonction dans le code s’appelle myFunction. Le nom affiché dans le menu et le nom de la fonction sont stockés séparément.
Pendant l’enregistrement, vous choisissez dans la barre en bas « Utiliser des références absolues » ou « Utiliser des références relatives ». Les références absolues sont enregistrées comme des adresses (B2) : la macro écrit toujours au même endroit, quelle que soit la cellule sélectionnée. Les références relatives sont enregistrées comme « une ligne sous la cellule actuelle » et partent de la cellule sélectionnée.
L’enregistrement seul ne gère ni les tableaux de longueur variable ni les étapes soumises à condition. Ensuite, il faut lire le code enregistré et le compléter.
Ce que l’on peut faire avec GAS
- Supprimer les lignes vides de données collées et mettre en forme les en-têtes
- Examiner montants ou dates et écrire « Gros » ou « En retard » dans une colonne
- Ajouter son propre menu à la feuille et lancer des traitements comme avec un bouton
- Créer ses propres fonctions utilisables dans les cellules (fonctions personnalisées)
- Envoyer des e-mails avec Gmail à partir d’un tableau
- Exécuter une tâche à heure fixe, par exemple chaque matin à 8 h (déclencheurs)
- Recopier dans une autre feuille les réponses Google Forms dès leur arrivée
À la main, chacune de ces tâches prend de quelques minutes à plusieurs dizaines. Écrite une fois, elle se lance ensuite d’un clic dans un menu, voire toute seule.
Débuter avec GAS
- Ouvrir la feuille et choisir « Extensions » → « Apps Script »
- L’éditeur s’ouvre dans un nouvel onglet : « Code.gs » à gauche et
function myFunction() { }à droite - Écrire le code entre
{ }et enregistrer (Ctrl+S, ⌘+S sur Mac) - Cliquer sur « ▷ Exécuter » en haut. Le résultat s’affiche dans le « Journal d’exécution » en bas
function myFunction() {
const sheet = SpreadsheetApp.getActiveSheet();
const value = sheet.getRange('A1').getValue();
Logger.log(value);
sheet.getRange('B1').setValue('Vérifié');
}Logger.log écrit une valeur dans le journal d’exécution. Les nombres s’affichent avec un point décimal, par exemple 120.0 (console.log affiche 120). Si quelque chose ne marche pas comme prévu, vérifiez d’abord les valeurs dans le journal.
Les écrans d’autorisation à la première exécution
La première fois que vous exécutez votre code, un écran demande si le script peut lire et modifier votre feuille. Beaucoup bloquent ici : voyons-le étape par étape.
- « Autorisation requise » → Examiner les autorisations / OK
- Choisir un compte
- « Google n’a pas validé cette application » → « Paramètres avancés » en bas à gauche
- « Accéder à (nom du projet) (non sécurisé) »
- Vérifier ce que vous autorisez et cliquer sur « Autoriser » (s’il faut cocher des éléments, les cocher puis cliquer sur « Continuer »)
« Google n’a pas validé cette application » est un avertissement affiché pour les scripts non examinés par Google. Vos propres scripts et vos macros enregistrées ne sont pas examinés : cet écran apparaît donc toujours. Si vous l’avez créé vous-même, vous pouvez continuer.
À l’inverse, si cet écran apparaît dans une feuille reçue d’un inconnu, choisissez « Retour à la sécurité ». Une fois autorisé, le script peut agir sur vos feuilles et vos e-mails avec votre compte.
Si vous placez /** @OnlyCurrentDoc */ en tête du code, le script ne peut toucher que « cette feuille » et les autorisations demandées sont plus restreintes. Les macros enregistrées l’ont dès le départ.
Vous pouvez suivre les mêmes étapes dans la mission 1 de l’entraînement.
Code courant
Voici ce qui sert le plus quand on travaille avec une feuille. Les numéros de ligne et de colonne commencent à 1, les indices d’un tableau lu avec getValues à 0.
| Code | Signification |
|---|---|
| const sheet = SpreadsheetApp.getActiveSheet(); | La feuille ouverte actuellement |
| sheet.getRange('A1').getValue() | Lire la valeur de A1 |
| sheet.getRange('A1').setValue('Terminé') | Écrire en A1 |
| sheet.getRange(2, 3) | Ligne 2, colonne 3 (C2). Les colonnes peuvent être données en nombre |
| sheet.getRange('A2:C10').getValues() | Lire une plage d’un coup (tableau à deux dimensions) |
| sheet.getRange(2, 1, 9, 3).setValues(values) | Écrire d’un coup (lignes et colonnes alignées sur le tableau) |
| sheet.getLastRow() | Numéro de la dernière ligne contenant une valeur |
| sheet.appendRow(['10/31', 'Sato', 5000]) | Ajouter une ligne sous la dernière |
| sheet.deleteRow(5) | Supprimer la ligne 5 (les lignes du dessous remontent) |
| sheet.getRange('A1:D1').setFontWeight('bold') | Mettre en gras |
| sheet.getRange('A1:D1').setBackground('#fff2cc') | Définir la couleur de fond |
| Logger.log(value) | Écrire dans le journal d’exécution (pour vérifier des valeurs) |
function judgeTargets() {
const sheet = SpreadsheetApp.getActiveSheet();
for (let row = 2; row <= sheet.getLastRow(); row++) {
const sales = sheet.getRange(row, 2).getValue();
const target = sheet.getRange(row, 3).getValue();
if (sales >= target) {
sheet.getRange(row, 4).setValue('Atteint');
} else {
sheet.getRange(row, 4).setValue('Non atteint');
}
}
}function onOpen() {
SpreadsheetApp.getUi()
.createMenu('Clôture mensuelle')
.addItem('Marquer les grosses ventes', 'markLarge')
.addToUi();
}Une fonction nommée onOpen s’exécute automatiquement à l’ouverture de la feuille. L’exécuter avec « ▷ Exécuter » dans l’éditeur provoque l’erreur Cannot call SpreadsheetApp.getUi() from this context. ; enregistrez donc puis rouvrez la feuille pour vérifier.
Envoyer des e-mails et planifier avec des déclencheurs
Les deux sujets les plus recherchés sur GAS sont l’envoi d’e-mails et les déclencheurs.
function sendReminders() {
const sheet = SpreadsheetApp.getActiveSheet();
const rows = sheet.getRange(2, 1, sheet.getLastRow() - 1, 2).getValues();
rows.forEach(([name, email]) => {
MailApp.sendEmail(email, 'Rappel de la date limite', name + ',\n\nLa date limite est ce vendredi.');
});
}L’envoi est limité : un compte Google gratuit peut envoyer jusqu’à 100 e-mails par jour (davantage avec Google Workspace). Une exécution dure au maximum 6 minutes ; au-delà, elle s’arrête sur « Exceeded maximum execution time ».
Pour planifier, cliquez à gauche de l’éditeur sur « Déclencheurs » (icône horloge) → « Ajouter un déclencheur », puis choisissez la fonction et « Déclencheur horaire ». Vous pouvez fixer une plage horaire chaque jour, semaine ou mois.
Les e-mails partent vraiment, même pour un simple essai. Testez d’abord avec un tableau qui ne contient que votre adresse.
Différences avec VBA d’Excel
| GAS | VBA d’Excel | |
|---|---|---|
| Code | JavaScript | VBA(Visual Basic) |
| Où il s’exécute | Serveurs de Google | Excel sur votre propre ordinateur |
| Ce qu’il faut | Un navigateur et un compte Google | La version de bureau d’Excel (surtout sous Windows) |
| Se connecte à | Gmail, Agenda, Drive, Forms | Word, Outlook, fichiers de l’ordinateur |
| Exécution planifiée | Avec des déclencheurs (fonctionne même ordinateur éteint) | À combiner avec le Planificateur de tâches de Windows ou équivalent |
Les idées sont les mêmes des deux côtés : lire des cellules, écrire, répéter et distinguer selon des conditions. Qui maîtrise l’un lit l’autre. Les macros Excel sont expliquées dans notre introduction aux macros Excel.
S’entraîner dans le navigateur
Dans la simulation macros et GAS de ce site, vous vous entraînez en exécutant du vrai code dans une feuille et un éditeur Apps Script virtuels. Vous complétez des blancs dans le code ; sur téléphone, vous choisissez chaque blanc parmi quatre options.
- Chapitre 1 Enregistrer et exécuter des macros
Exécuter une macro enregistrée et en enregistrer une soi-même. Références absolues et relatives, lire et modifier le code enregistré.
- Chapitre 2 Lire, répéter, distinguer
Lire des cellules avec getValue, écrire avec setValue et vérifier les valeurs dans le journal d’exécution. Parcourir toutes les lignes avec for et distinguer avec if.
- Chapitre 3 Étude de cas : mettre au propre le tableau des ventes mensuelles
Supprimer les lignes vides, marquer les grosses ventes d’un coup et lancer le tout depuis son propre menu. Pour finir, sa propre fonction pour les cellules.
Comment apprendre GAS
Un bon départ : « Enregistrer une macro » dans une de vos feuilles et lire le code obtenu. On voit plus facilement ce que fait chaque instruction.
L’IA générative peut aussi écrire du code. Mais pour juger s’il est juste et où le corriger, il faut savoir lire au moins le « code courant » de cet article.
* Noms d’écran et limites en date d’octobre 2026 ; ils peuvent changer selon les évolutions de Google.
* Google Sheets est une marque de Google LLC. Ce site n'est pas affilié à Google.