Tous les guides
IntermédiaireÀ votre rythmeGuide gratuitSection 45/95

Google Apps Script — Automatiser Google Workspace

Pratiquez les fondations du développement : programmation, web, API, données et usages de l’IA. Des sections et exercices pour construire vos premiers projets.

💡

Contenu gratuit, accessible sans compte. Les outils et modèles évoluent : consultez le dossier actuel pour vérifier leurs versions. Modèles et sources

Section 11.3.6 : Google Apps Script — Automatiser Google Workspace

🎯 Objectif pédagogique

Automatiser Google Sheets, Gmail et Google Calendar avec Apps Script. Vous serez capable de créer des scripts qui automatisent vos outils quotidiens sans quitter l'écosystème Google — idéal pour les tâches corporate.


Google Apps Script — La porte d'entrée de l'automatisation

Marc utilise Google Sheets pour son suivi de candidatures, Gmail pour les échanges, et Google Calendar pour les entretiens. Apps Script est le langage de macros de Google — JavaScript intégré directement dans les Google Apps. Pas besoin de serveur, pas besoin de déploiement.

Accéder à Apps Script

  1. →Ouvrez un Google Sheet
  2. →Menu Extensions → Apps Script
  3. →L'éditeur de code s'ouvre dans un nouvel onglet

Exemples concrets

1. Envoyer un email automatique depuis Sheets

function sendFollowUpEmails() \{
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Candidatures");
  const data = sheet.getDataRange().getValues();
  const header = data[0];
  
  // Index des colonnes
  const emailCol = header.indexOf("Email Contact");
  const statusCol = header.indexOf("Statut");
  const companyCol = header.indexOf("Entreprise");
  const dateCol = header.indexOf("Date candidature");
  const followUpCol = header.indexOf("Relance envoyée");
  
  const today = new Date();
  
  for (let i = 1; i < data.length; i++) \{
    const status = data[i][statusCol];
    const email = data[i][emailCol];
    const company = data[i][companyCol];
    const applyDate = new Date(data[i][dateCol]);
    const alreadySent = data[i][followUpCol];
    
    // Si candidature > 7 jours sans réponse et pas encore relancé
    const daysDiff = (today - applyDate) / (1000 * 60 * 60 * 24);
    
    if (status === "applied" && daysDiff > 7 && !alreadySent && email) \{
      GmailApp.sendEmail(email, 
        "Suivi candidature — " + company,
        "Bonjour,\n\nJe me permets de revenir vers vous concernant ma candidature " +
        "pour le poste chez " + company + ".\n\nCordialement,\nMarc Dupont"
      );
      
      // Marquer comme relancé
      sheet.getRange(i + 1, followUpCol + 1).setValue("✅ " + today.toLocaleDateString());
      Logger.log("Relance envoyée à " + company);
    \}
  \}
\}

2. Créer un événement Calendar depuis Sheets

function createInterviewEvents() \{
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Entretiens");
  const data = sheet.getDataRange().getValues();
  const calendar = CalendarApp.getDefaultCalendar();
  
  for (let i = 1; i < data.length; i++) \{
    const company = data[i][0];
    const date = new Date(data[i][1]);
    const time = data[i][2]; // "14:00"
    const link = data[i][3]; // URL Meet/Zoom
    const created = data[i][4];
    
    if (!created && date) \{
      const [hours, mins] = time.split(':').map(Number);
      date.setHours(hours, mins);
      
      const endDate = new Date(date.getTime() + 60 * 60 * 1000); // +1h
      
      const event = calendar.createEvent(
        "🎯 Entretien — " + company,
        date,
        endDate,
        \{ description: "Lien : " + link + "\n\nPréparer : voir notes dans le Sheet" \}
      );
      
      sheet.getRange(i + 1, 5).setValue("✅ Créé");
      Logger.log("Événement créé : " + company);
    \}
  \}
\}

3. Dashboard automatique dans Sheets

function updateDashboard() \{
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const source = ss.getSheetByName("Candidatures");
  const dash = ss.getSheetByName("Dashboard");
  
  const data = source.getDataRange().getValues();
  const statusCol = data[0].indexOf("Statut");
  
  // Compter par statut
  const counts = \{\};
  for (let i = 1; i < data.length; i++) \{
    const status = data[i][statusCol] || "unknown";
    counts[status] = (counts[status] || 0) + 1;
  \}
  
  // Écrire dans le dashboard
  const total = data.length - 1;
  dash.getRange("B2").setValue(total);
  dash.getRange("B3").setValue(counts["interview"] || 0);
  dash.getRange("B4").setValue(counts["offer"] || 0);
  dash.getRange("B5").setValue(((counts["interview"] || 0) / total * 100).toFixed(1) + "%");
  dash.getRange("B6").setValue(new Date());
  
  Logger.log("Dashboard mis à jour");
\}

Déclencheurs (Triggers)

// Exécuter automatiquement :
// Menu : Déclencheurs → Ajouter un déclencheur

// Exemples :
// - updateDashboard → Toutes les heures
// - sendFollowUpEmails → Tous les jours à 9h
// - createInterviewEvents → À chaque modification du Sheet

// Créer un trigger via code :
function createTriggers() \{
  ScriptApp.newTrigger('updateDashboard')
    .timeBased()
    .everyHours(1)
    .create();
    
  ScriptApp.newTrigger('sendFollowUpEmails')
    .timeBased()
    .atHour(9)
    .everyDays(1)
    .create();
\}

Apps Script = automatisation gratuite

Apps Script est gratuit, ne nécessite aucun serveur, et s'exécute sur l'infrastructure Google. Limites : 6 min d'exécution max, 100 emails/jour (compte gratuit), 20 triggers. Pour Marc, c'est largement suffisant pour automatiser sa recherche d'emploi.

🏋️ Exercice pratique (25 minutes)

  1. →Créez un Google Sheet avec vos candidatures (Company, Position, Status, Date, Email)
  2. →Écrivez un Apps Script qui compte les candidatures par statut
  3. →Ajoutez un trigger qui met à jour le compteur toutes les heures
  4. →Bonus : envoyez-vous un email récapitulatif quotidien
Vérification rapide

Quel est l'avantage principal de Google Apps Script par rapport à un script Python ?

Vérification rapide

Qu'est-ce qu'un trigger (déclencheur) dans Apps Script ?

Votre progression

Cette progression est déclarative et conservée dans votre navigateur. L’attestation finale ne constitue pas un diplôme ni une évaluation indépendante.

Voir ma progression et mon attestation

Apprendre l’IA, du premier prompt aux agents

15 guides gratuitsQuiz, schémas et ateliersSans compte

Un cas pratique IA dans votre boîte mail

Méthodes, ressources et nouveaux exercices. Gratuit, avec désinscription à tout moment.