Écrire dans une feuille de calcul
Introduction
Précédemment, nous avons vu comment récupérer un classeur, une feuille, puis une plage de données, et comment naviguer dans la feuille pour sélectionner efficacement une ou plusieurs cellules avec l’indexation et la notation A1.
Ces bases vont nous servir dans ce chapitre, où nous allons découvrir comment écrire des données dans la feuille et les mettre en forme.
Écrire des valeurs et des formules
Après la lecture vient naturellement l’écriture.
Comme pour la récupération de données, plusieurs approches sont possibles pour écrire dans une feuille : certaines sont simples et intuitives, d’autres plus performantes selon la quantité de données à traiter.
1. Écriture simple avec setValue() et setValues()
L’écriture dans Google Sheets se fait à l’aide des méthodes de la classe Range.
Les deux méthodes les plus courantes, à l’image de getValue()et getValues(), sont les suivantes :
-
setValue(value) : écrit une seule valeur dans une cellule.
-
setValues(values) : écrit plusieurs valeurs à la fois dans une plage.
La méthode setValue()permet d’insérer une valeur unique dans la cellule ou la plage sélectionnée.
Cette valeur peut être un nombre, une chaîne de caractères, un booléen ou une date.
Si elle commence par le signe « = », elle sera interprétée comme une formule.
Si le Range choisi contient plusieurs cellules, la même valeur sera appliquée à chacune d’elles.

La méthode setValues (values) permet d’écrire plusieurs valeurs en une seule opération dans une plage rectangulaire.
Elle prend en paramètre un tableau à deux dimensions, dont la taille doit correspondre exactement aux dimensions de la plage ciblée.
Chaque élément du tableau représente la valeur d’une cellule ; cette valeur peut être un nombre, une chaîne de caractères, un booléen ou une date.
Si l’une d’elles commence par un signe « = », elle sera interprétée comme une formule.

Ces deux méthodes renvoient le Range sur lequel elles ont été appelées, ce qui permet de chaîner les méthodes !
2. Écrire des formules
Toujours à partir de la classe Range, Apps Script nous offre plusieurs méthodes pour injecter des formules dans notre tableur.
-
setFormula() et setFormulaR1C1() : pour une seule cellule.
-
setFormulas() et setFormulasR1C1() : pour un bloc complet.
Les deux premières méthodes prennent en paramètre un texte, les deux suivantes un...
Appliquer des formats et du texte enrichi
1. Formats numériques et dates
Lorsqu’on écrit des données dans Google Sheets via Apps Script, il est fréquent de vouloir appliquer un format particulier : afficher un nombre comme une monnaie, formater une date dans un style précis, ou encore enrichir un texte avec des styles et des liens.
Ces actions se font via les méthodes de la classe Range.
Pour appliquer un format à une cellule ou une plage, on utilise :
-
setNumberFormat(format) pour une seule cellule ou un bloc entier avec le même format.
-
setNumberFormats(formats) pour définir un format différent pour chaque cellule d’une plage rectangulaire (en passant un tableau 2D de formats).
Exemple, format monétaire en euros :
function formatAsCurrency() {
const sheet = SpreadsheetApp.getActiveSpreadsheet()
.getSheetByName("Sales");
sheet.getRange("C2:C10").setNumberFormat("€#,##0.00");
}
Ou encore, format date en « MMMM yyyy » :
function formatAsMonthYear() {
const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sales");
sheet.getRange("B2:B10").setNumberFormat("mmmm yyyy");
}
Reprenons notre tableau de ventes et appliquons, en une seule opération, un format monétaire en euros pour la colonne Total et un format de date « MMMM yyyy » pour la colonne Mois/Année.
function formatTotalAndMonthYear() {
const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sales");
const lastRow = sheet.getLastRow();
const formats = Array.from({ length: lastRow - 1 }, () => [
"€#,##0.00",
"mmmm yyyy"
]);
sheet.getRange(2, 5, lastRow - 1, 2).setNumberFormats(formats);
}

Les méthodes qui insèrent des données ou des formules peuvent être enchaînées avec celles...
Autres méthodes et astuces à connaître
1. Supprimer des valeurs/du style
Quand on nettoie une feuille, on ne veut pas toujours tout effacer. Voici les méthodes clés de Range et Sheet à connaître :
range.clear()
Efface tout (contenus + formats + validations + notes) sur la plage.
range.clearContent()
Efface uniquement les valeurs (les formats restent).
range.clearFormat()
Efface uniquement le style (format nombre, police, couleur, arrière-plan, bordures…).
range.clearDataValidations()
Retire les validations de données (listes déroulantes, etc.).
range.clearNotes()
Efface les notes de la plage.
Pour supprimer rapidement les règles de mise en forme conditionnelle, niveau feuille cette fois-ci, utiliser sheet.setConditionalFormatRules([]).
Voici quelques fonctions utilitaires qui peuvent être ajoutées à un projet pour supprimer facilement du contenu ou des formats sur un range donné.
Effacer les valeurs, en conservant les formats :
function clearValues(range) {
range.clearContent();
}
Effacer uniquement les formats (nombre, police, couleur…), conserver les valeurs :
function clearFormats(range) {
range.clearFormat();
}
Effacer tout : valeurs, formats, validations et notes :
function clearAll(range) {
range.clear();
}
Supprimer uniquement les règles de validation de données (listes déroulantes, etc.) :
function clearValidations(range) {
range.clearDataValidations();
}
Supprimer toutes les règles de mise en forme conditionnelle d’une feuille :
function clearAllConditionalFormats(sheet) {
sheet.setConditionalFormatRules([]);
}
2. Supprimer/ajouter des lignes ou des colonnes
La classe Sheet propose plusieurs méthodes pour ajouter ou supprimer des lignes et des colonnes.
Voici les méthodes d’ajout de ligne(s) :
-
insertRowBefore(beforePosition) : insère une ligne avant beforePosition.
-
insertRowAfter(afterPosition) : insère une ligne après afterPosition.
-
insertRows(rowIndex) : insère une ligne à rowIndex.
-
insertRows(rowIndex,numRows) : insère numRows lignes à partir de rowIndex....