Google Apps Script
Retrouvez nos trucs et astuces Google Workspace classés par application.
Intermédiaire Multiplier par 50 la vitesse de vos scripts Sheets (getValues / setValues en lot)
Ne faites jamais de getRange().getValue() ou setValue() à l'intérieur d'une boucle for : lisez et écrivez un tableau 2D en une seule opération.
SpreadsheetApp prend environ 0,1 à 0,3 seconde. Sur 500 lignes, une boucle cellule par cellule dépasse la limite des 6 minutes d'exécution !- ✅ La bonne pratique : lisez toute la plage d'un coup avec
const donnees = feuille.getDataRange().getValues();, traitez le tableau JavaScript en mémoire (quasi instantané), puis réécrivez le tout en un seul appel feuille.getRange(1, 1, donnees.length, donnees[0].length).setValues(donnees);.- Retrouvez des modèles complets sur notre guide Google Apps Script.
Intermédiaire Stocker vos clés API (Gemini, Webhook, CRM) en toute sécurité avec PropertiesService
Ne laissez jamais une clé API en clair dans votre fichier Code.gs partagé avec d'autres éditeurs.
1. Cliquez sur l'icône Paramètres du projet (roue crantée à gauche) › descendez jusqu'à Propriétés de script › cliquez sur Ajouter une propriété de script (ex.
GEMINI_API_KEY).2. Dans votre code, récupérez la clé avec :
const cleApi = PropertiesService.getScriptProperties().getProperty('GEMINI_API_KEY');3. Pour une clé propre à chaque utilisateur d'un add-on, utilisez
PropertiesService.getUserProperties(). Débutant Éviter les déclencheurs (triggers) en double qui envoient 3 fois le même e-mail
Supprimez systématiquement les anciens triggers portant le même nom de fonction avant d'en créer un nouveau.
ScriptApp.newTrigger('maFonction'), nettoyez les anciens déclencheurs :ScriptApp.getProjectTriggers().forEach(t => { if (t.getHandlerFunction() === 'maFonction') ScriptApp.deleteTrigger(t); });Vous garantissez ainsi qu'un seul déclencheur horaire ou quotidien est actif, même si l'utilisateur clique plusieurs fois sur votre menu d'installation.
Débutant Gérer les configurations de script avec ScriptProperties
Stockez et accédez facilement aux paramètres de configuration de vos scripts Google Apps Script sans modifier le code, en utilisant le service ScriptProperties.
PropertiesService. Cela facilite la maintenance et le déploiement de vos scripts dans différents environnements.Définir une propriété :
function setMyConfig() {
const scriptProperties = PropertiesService.getScriptProperties();
scriptProperties.setProperty('ADMIN_EMAIL', 'admin@example.com');
scriptProperties.setProperty('SHEET_ID_DATA', '1ABC...XYZ');
Logger.log('Propriétés définies.');
}Récupérer une propriété :
function getMyConfig() {
const scriptProperties = PropertiesService.getScriptProperties();
const adminEmail = scriptProperties.getProperty('ADMIN_EMAIL');
const sheetId = scriptProperties.getProperty('SHEET_ID_DATA');
Logger.log('Email Admin : ' + adminEmail);
Logger.log('ID Feuille : ' + sheetId);
}Vous pouvez également gérer ces propriétés via l'interface utilisateur d'Apps Script : ouvrez votre script, cliquez sur l'icône en forme d'engrenage "Paramètres du projet" (Project Settings), puis faites défiler jusqu'à "Propriétés du script" (Script properties). Vous pouvez y ajouter, modifier ou supprimer des propriétés manuellement.
Intermédiaire Mettre en place une gestion d'erreurs robuste avec notifications
Assurez la fiabilité de vos scripts Apps Script en implémentant une gestion d'erreurs avec des notifications automatiques par email en cas de problème.
try...catch et envoyez des notifications par email pour être alerté immédiatement.Exemple :
function myMonitoredFunction() {
try {
// Votre code qui pourrait potentiellement échouer
const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Données');
if (!sheet) {
throw new Error('La feuille "Données" est introuvable.');
}
// ... le reste de votre logique ...
} catch (e) {
const scriptName = ScriptApp.getProjectKey();
const functionName = arguments.callee.name; // Ou simplement 'myMonitoredFunction'
const adminEmail = 'votre.email@example.com'; // Ou stocké dans ScriptProperties
const subject = `[ERREUR GAS] ${scriptName} - ${functionName}`;
const body = `Une erreur est survenue dans le script "${scriptName}", fonction "${functionName}" :
Message : ${e.message}
Nom : ${e.name}
Fichier : ${e.fileName}
Ligne : ${e.lineNumber}
Pile : ${e.stack}`;
MailApp.sendEmail(adminEmail, subject, body);
Logger.log(body); // Pour le journal d'exécution
}
}N'oubliez pas d'autoriser le script à envoyer des emails lors de la première exécution.
Intermédiaire Optimiser les performances avec les opérations par lots
Réduisez drastiquement le temps d'exécution de vos scripts Google Apps Script en utilisant des opérations par lots pour interagir avec les services Google.
Mauvaise pratique (lent) :
function slowUpdate() {
const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
for (let i = 1; i <= 100; i++) {
sheet.getRange(i, 1).setValue('Value ' + i);
}
}Bonne pratique (rapide) :
function fastUpdate() {
const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
const data = [];
for (let i = 0; i < 100; i++) {
data.push(['Value ' + (i + 1)]);
}
sheet.getRange(1, 1, data.length, data[0].length).setValues(data);
}Cette astuce est applicable à presque tous les services Google Workspace. Collectez vos données, puis effectuez une seule opération de lecture ou d'écriture en bloc.
Passez à Google Workspace Business avec votre propre nom de domaine et l’IA Gemini incluse
Profitez d’un essai gratuit de 14 jours et d’une réduction sur votre première année Google Workspace Business (Gmail pro, Drive sécurisé, Meet, Docs, Sheets et l’assistant IA Gemini intégré).