← Retour au blog
Outils

Google Apps Script — puissance et limites de l'automatisation dans Google Workspace

Google Apps Script permet d'automatiser Gmail, Sheets, Drive et Calendar sans infrastructure. Très accessible, il a aussi ses angles morts. Tour d'horizon honnête de ce que cet outil peut et ne peut pas faire.

Depuis son lancement en 2009, Google Apps Script (GAS) est l'outil d'automatisation natif de Google Workspace. Un environnement JavaScript hébergé, exécuté dans le cloud Google, avec accès direct à l'ensemble des services G Suite. Pas de serveur à gérer, pas de déploiement, pas de facturation à l'usage. Pour beaucoup d'équipes, c'est la porte d'entrée vers l'automatisation de bureau.

Mais comme tout outil, il a ses forces et ses limites. Les connaître avant de s'y engager évite de mauvaises surprises.


Ce que Google Apps Script sait très bien faire

Automatiser les tâches répétitives sur les données Google

C'est le cas d'usage le plus courant et le plus solide. Google Sheets devient un mini-backend : importation de données depuis une API externe, calculs automatisés, formatage conditionnel programmatique, génération de rapports PDF.

function genererRapportMensuel() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const feuille = ss.getSheetByName('Données');
  const donnees = feuille.getDataRange().getValues();

  // Filtrer les lignes du mois en cours
  const maintenant = new Date();
  const lignesMois = donnees.filter(row => {
    const date = new Date(row[0]);
    return date.getMonth() === maintenant.getMonth()
      && date.getFullYear() === maintenant.getFullYear();
  });

  // Créer un doc Google Docs avec les résultats
  const doc = DocumentApp.create('Rapport ' + Utilities.formatDate(maintenant, 'Europe/Paris', 'MM/yyyy'));
  const body = doc.getBody();
  body.appendParagraph('Rapport mensuel').setHeading(DocumentApp.ParagraphHeading.HEADING1);
  lignesMois.forEach(row => body.appendParagraph(row.join(' — ')));
  doc.saveAndClose();
}

Orchestrer Gmail

Trier, étiqueter, archiver, répondre, transférer selon des critères complexes — tout ce que les filtres natifs de Gmail ne permettent pas. GAS accède à l'intégralité de l'API Gmail avec la même puissance que le client web.

Réagir à des événements Google Forms

Chaque soumission de formulaire peut déclencher un script : envoyer un email de confirmation personnalisé, créer une entrée dans un CRM via API, provisionner un accès dans un autre service.

Créer des interfaces légères avec HtmlService

GAS peut servir des pages HTML simples hébergées chez Google. Utile pour des formulaires internes, des tableaux de bord légers, des outils d'administration sans serveur.

Connecter des services via UrlFetchApp

Appels HTTP entrants et sortants : webhooks Slack, appels API REST, intégrations avec des services tiers. GAS peut jouer le rôle de colle entre plusieurs services.


Les limites qu'on découvre trop tard

Les quotas d'exécution

C'est le premier mur. Google impose des limites strictes :

Ressource Limite (compte gratuit) Limite (Workspace)
Durée d'exécution par script 6 minutes 6 minutes
Appels UrlFetchApp par jour 20 000 100 000
Emails envoyés via GmailApp 100/jour 1 500/jour
Triggers simultanés 20 20

Un script qui tourne sur un Spreadsheet avec 100 000 lignes atteint vite la limite des 6 minutes. Il faut alors découper le traitement, sauvegarder l'état dans les propriétés du script, et enchaîner les exécutions — ce qui complexifie rapidement le code.

La gestion des erreurs est silencieuse par défaut

Un script qui plante à 3h du matin dans un trigger horaire n'envoie pas d'alerte automatique à moins de le configurer explicitement. Le débogage a posteriori est pénible : les logs sont limités à 50 lignes par exécution et disparaissent après quelques jours.

function scriptAvecGestionErreurs() {
  try {
    // logique métier
  } catch(e) {
    // Sans ça, vous ne saurez jamais que ça a planté
    GmailApp.sendEmail(
      'admin@mondomaine.com',
      '[ERREUR] Script ' + ScriptApp.getScriptId(),
      e.message + '\n\n' + e.stack
    );
  }
}

Pas de gestion de dépendances

GAS ne connaît pas npm, pas de package.json, pas d'import de bibliothèques externes. Il existe un système de bibliothèques Google propriétaire, mais limité. Pour utiliser une lib tierce, il faut copier-coller le code source directement dans l'éditeur.

L'environnement d'exécution est V8, pas Node

Depuis 2020, GAS tourne sur le moteur V8, ce qui autorise la syntaxe ES6+ moderne. Mais c'est un environnement isolé : pas d'accès au système de fichiers, pas de requêtes DNS arbitraires, pas de sockets. Seulement ce que Google expose via ses APIs.

La collaboration et le versioning sont rudimentaires

L'éditeur intégré n'est pas VS Code. Pas de branches Git natives. CLASP (l'outil CLI officiel) permet de travailler localement et de pousser vers Google, mais c'est une couche supplémentaire à configurer. Pour une équipe de plusieurs développeurs, la friction est réelle.

Couplage fort avec Google

Un système automatisé construit entièrement sur GAS est difficilement portable. Si votre organisation migre vers Microsoft 365, tout est à réécrire. Ce couplage est souvent acceptable — la question est de le choisir consciemment.


Quand utiliser GAS, quand ne pas l'utiliser

GAS est le bon outil quand :

  • Le périmètre est clairement dans l'écosystème Google Workspace
  • Les volumes de données sont raisonnables (quelques milliers de lignes, pas des millions)
  • La logique est simple à modérément complexe
  • Les délais d'exécution de quelques minutes sont acceptables
  • L'équipe est petite ou le script est maintenu par une seule personne

Préférez une autre solution quand :

  • Les volumes ou la fréquence d'exécution dépassent les quotas
  • La fiabilité et la traçabilité sont critiques (production, facturation, conformité)
  • Plusieurs développeurs doivent collaborer sur le code
  • La logique métier est complexe et mérite des tests unitaires sérieux
  • Vous avez besoin de bibliothèques que GAS ne peut pas embarquer

Dans ces cas, une Cloud Function (GCP), un service AWS Lambda ou même un simple cron sur un serveur vous donnera plus de contrôle, de fiabilité et de maintenabilité.


CLASP — travailler avec GAS comme un développeur

L'outil CLI clasp permet de développer localement et de déployer vers Google Apps Script.

npm install -g @google/clasp
clasp login
clasp clone <script-id>
# éditer en local avec votre éditeur favori
clasp push

Couplé à un dépôt Git, c'est une amélioration significative du workflow. Vous bénéficiez de la syntaxe moderne TypeScript (clasp supporte la compilation TS → JS), de votre IDE habituel, et d'un historique de versions propre.


En résumé

Google Apps Script est un outil remarquablement accessible pour automatiser des tâches dans Google Workspace. Il abaisse la barre d'entrée à l'automatisation pour des profils non-développeurs, et offre une puissance réelle pour des cas d'usage circonscrits.

Ses limites — quotas, absence de dépendances, debugging difficile, couplage Google — sont acceptables quand on les connaît à l'avance. Elles deviennent des problèmes sérieux quand on les découvre en production.

La règle empirique : GAS pour la glue, pas pour le moteur.

Vous avez un projet en tête ?

Parlons de vos enjeux et voyons comment Gotan peut vous accompagner.

Contactez-nous