Pilotez Google Apps Script avec l'IA

Logo de l'institution

Pôle Formation UIMM CVDL (S. Jaubert)

L'objectif de ce tutoriel est simple : vous allez prendre le contrôle de votre environnement Google. Nous allons transformer votre suite Google en un assistant personnel qui travaille pour vous, 24/7.

Qu'est-ce que Google Apps Script ?

Pour le dire simplement : c'est le cerveau caché qui peut connecter tous vos outils Google.

Vous n'êtes plus un simple utilisateur. Vous devenez un architecte de vos propres solutions.

Partie 1 : Accéder au Cerveau (Votre Premier Script)

Pas besoin de télécharger quoi que ce soit. L'éditeur de script est déjà dans vos outils.

  1. Ouvrez un nouveau Google Sheet (tapez sheet.new dans votre navigateur).
  2. Allez dans le menu : Extensions > Apps Script.
  3. Une nouvelle fenêtre s'ouvre. C'est votre "tour de contrôle". Vous verrez un fichier nommé Code.gs. C'est là que nous allons coller le code généré par l'IA.

Partie 2 : La Méthode Magique (Piloter l'IA pour coder)

Voici le processus en 5 étapes que nous allons utiliser à chaque fois.

Étape 1 : Formuler le Besoin (Le "Brief") 🎯

C'est l'étape la plus importante. Vous devez être hyper-précis.

Étape 2 : Demander à l'IA (La Génération) 🤖

Vous ouvrez une IA (comme Gemini) et vous lui donnez votre "Bon brief". Vous lui dites : "Écris-moi le code Google Apps Script complet pour faire cela."

Étape 3 : Copier et Coller (L'Implantation) 📋

  1. L'IA va vous générer un bloc de code. Vous copiez tout.
  2. Vous retournez dans votre fenêtre Apps Script (le Code.gs).
  3. Vous effacez tout ce qui s'y trouve et vous collez votre nouveau code.
  4. Vous cliquez sur l'icône Enregistrer.

Étape 4 : Autoriser (La Clé de Contact) 🔑

C'est une étape cruciale la première fois.

  1. Cliquez sur le bouton Exécuter (le triangle ►).
  2. Google va vous dire "Autorisation requise". Cliquez sur "Examiner les autorisations".
  3. Choisissez votre compte Google.
  4. Vous verrez un avertissement. Cliquez sur "Paramètres avancés", puis sur "Accéder à [Nom de votre script] (non sécurisé)".
  5. Acceptez toutes les autorisations.

Étape 5 : Tester et Regarder la Magie (L'Exécution) ✨

Maintenant, retournez sur votre document et faites l'action qui doit déclencher le script. Observez la magie opérer.

Partie 3 : Simulation (L'Onboarding RH)

Objectif : Automatiser l'arrivée d'un nouveau salarié. (Google Sheet > Génère Doc > Range dans Drive).

Étape A : La Base de Données (Le Google Sheet)

Créez un Google Sheet avec ces colonnes :
A: Nom Complet | B: Poste | C: Manager | D: Date d'arrivée | E: Email | F: Statut

Étape B : Le Modèle (Le Google Doc)

Créez un Google Doc modèle. Là où les données doivent changer, utilisez des variables entre accolades.
Exemple : "Bienvenue à {{Nom Complet}} au poste de {{Poste}}."
Notez l'ID de ce document (dans l'URL).

Étape C : Le Brief pour l'IA

Voici un exemple de prompt parfait à donner à l'IA :

Prompt pour l'IA :

"Tu es un expert Google Apps Script.
Contexte : J'ai un Google Sheet 'Onboarding' (ID: [METTEZ VOTRE ID]) avec les colonnes A: Nom Complet, B: Poste, C: Manager, D: Date d'arrivée, E: Email, F: Statut. J'ai un Google Doc modèle (ID: [VOTRE ID MODÈLE]) et un dossier Drive 'Contrats Signés' (ID: [VOTRE ID DOSSIER]).
Déclencheur : Le script doit se lancer automatiquement quand j'écris 'Prêt' dans la colonne F (Statut).
Actions : 1. Détecter l'édition 'Prêt' en colonne F. 2. Lire les données de la ligne modifiée. 3. Faire une copie du Doc modèle. 4. Remplacer les variables (ex: {{Nom Complet}}) avec les données du Sheet. 5. Renommer le nouveau Doc : 'Contrat - [Nom Complet]'. 6. Ranger ce Doc dans le dossier 'Contrats Signés'. 7. Écrire 'Contrat Généré' dans la colonne F."

Étape D : Le Code Généré (Exemple)

L'IA vous donnera quelque chose comme ça. Copiez-le dans votre éditeur Code.gs.


// IDs à personnaliser (REMPLISSEZ-LES AVEC VOS PROPRES IDs)
const SHEET_ID = 'METTEZ_L_ID_DE_VOTRE_SHEET';
const TEMPLATE_DOC_ID = 'METTEZ_L_ID_DE_VOTRE_DOC_MODÈLE';
const TARGET_FOLDER_ID = 'METTEZ_L_ID_DE_VOTRE_DOSSIER_DRIVE';

/**
 * Fonction qui se déclenche à chaque édition du Google Sheet.
 * @param {Object} e - L'objet d'événement qui contient les infos sur l'édition
 */
function onEdit(e) {
  
  const range = e.range; // La cellule qui a été modifiée
  const sheet = range.getSheet(); // La feuille active
  
  const editedRow = range.getRow(); // Numéro de la ligne modifiée
  const editedCol = range.getColumn(); // Numéro de la colonne modifiée
  
  const statusColumn = 6; // Colonne F
  const triggerText = 'Prêt';
  
  // Si la modification n'est pas dans la colonne F OU si le texte n'est pas "Prêt"
  if (editedCol !== statusColumn || range.getValue() !== triggerText) {
    return; // On arrête le script
  }
  
  // 1. Lire les données de la ligne
  // getRange(ligne, colonne_début, nb_lignes, nb_colonnes)
  const dataRange = sheet.getRange(editedRow, 1, 1, 5); // Colonnes A à E
  const data = dataRange.getValues()[0]; // [Nom, Poste, Manager, Date, Email]
  
  const nomComplet = data[0];
  const poste = data[1];
  const manager = data[2];
  const dateArrivee = new Date(data[3]).toLocaleDateString('fr-FR'); // Formatage de la date
  const email = data[4];

  // 2. Accéder aux dossiers et au modèle
  const templateDoc = DriveApp.getFileById(TEMPLATE_DOC_ID);
  const targetFolder = DriveApp.getFolderById(TARGET_FOLDER_ID);
  
  // 3. Créer la copie et la renommer
  const newFileName = 'Contrat - ' + nomComplet;
  const newDoc = templateDoc.makeCopy(newFileName, targetFolder); // Copie + Rangement
  
  // 4. Remplacer les variables dans le nouveau document
  const docBody = DocumentApp.openById(newDoc.getId()).getBody();
  
  docBody.replaceText('{{Nom Complet}}', nomComplet);
  docBody.replaceText('{{Poste}}', poste);
  docBody.replaceText('{{Manager}}', manager);
  docBody.replaceText('{{Date d\'arrivée}}', dateArrivee);
  // Ajoutez autant de replaceText que de variables
  
  // 5. Mettre à jour le statut dans le Sheet
  const statusCell = sheet.getRange(editedRow, statusColumn);
  statusCell.setValue('Contrat Généré');
  
  Logger.log('Contrat généré pour ' + nomComplet); // Pour le débogage
}
            

Étape E : Tester

  1. Enregistrez le script.
  2. Autorisez-le (voir Partie 2, Étape 4).
  3. Allez dans votre Google Sheet.
  4. Remplissez une ligne avec des infos de test.
  5. Dans la colonne F, tapez Prêt et appuyez sur Entrée.
  6. Regardez la cellule F passer à "Contrat Généré" et vérifiez votre dossier Drive !

Partie 4 : Aller plus loin (Boutons et Déclencheurs)

Parfois, on veut un bouton pour lancer une action manuellement.

Créer un Menu Personnalisé

Ajoutez ce code en plus de votre fonction onEdit (dans le même fichier Code.gs).


/**
 * Se lance à l'ouverture du document.
 * Crée un menu personnalisé dans l'interface du Sheet.
 */
function onOpen() {
  const ui = SpreadsheetApp.getUi();
  ui.createMenu('🤖 Outils RH')
      .addItem('Générer le contrat (Ligne sélectionnée)', 'genererContratManuellement')
      .addToUi();
}

/**
 * Fonction manuelle pour générer le contrat de la ligne active.
 */
function genererContratManuellement() {
  // Récupérez les IDs du début du script (vous pouvez les redéfinir ici ou les rendre globales)
  // const TEMPLATE_DOC_ID = '...';
  // const TARGET_FOLDER_ID = '...';

  const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  const range = sheet.getActiveRange(); // La cellule sélectionnée par l'utilisateur
  const editedRow = range.getRow();
  
  // 1. Lire les données
  const data = sheet.getRange(editedRow, 1, 1, 5).getValues()[0];
  const nomComplet = data[0];
  const poste = data[1];
  const manager = data[2];
  const dateArrivee = new Date(data[3]).toLocaleDateString('fr-FR');
  
  // 2. Accéder aux dossiers et au modèle
  const templateDoc = DriveApp.getFileById(TEMPLATE_DOC_ID); // Assurez-vous que cette variable est accessible
  const targetFolder = DriveApp.getFolderById(TARGET_FOLDER_ID); // Assurez-vous que cette variable est accessible

  // 3. Créer la copie et la renommer
  const newFileName = 'Contrat - ' + nomComplet;
  const newDoc = templateDoc.makeCopy(newFileName, targetFolder);
  
  // 4. Remplacer les variables
  const docBody = DocumentApp.openById(newDoc.getId()).getBody();
  docBody.replaceText('{{Nom Complet}}', nomComplet);
  docBody.replaceText('{{Poste}}', poste);
  docBody.replaceText('{{Manager}}', manager);
  docBody.replaceText('{{Date d\'arrivée}}', dateArrivee);
  
  // 5. Mettre à jour le statut
  sheet.getRange(editedRow, 6).setValue('Contrat Généré (Manuel)');
  
  // 6. Alerte de confirmation
  SpreadApp.getUi().alert('Contrat pour ' + nomComplet + ' a été généré avec succès !');
}
            

Résultat : Enregistrez et rechargez votre Google Sheet. Un nouveau menu "🤖 Outils RH" apparaît en haut !

Partie 5 : D'autres Idées (Les Cas d'Usage)

Ce que vous venez de faire n'est que le début. Voici ce qui devient possible :

1. Les factures qui se classent sans effort

Logique : Un déclencheur sur Google Drive (quand un fichier est ajouté) qui lit le PDF et écrit dans un Sheet.

2. Les inscriptions qui se gèrent toutes seules

Logique : Un déclencheur sur Google Forms (quand un formulaire est soumis) qui crée un dossier Drive pour l'inscrit et envoie un mail de bienvenue via Gmail.

3. Les attestations toujours à l’heure

Logique : Comme notre simulation. Un statut "Terminé" dans un Sheet déclenche la création d'un PDF depuis un modèle et l'envoie par Gmail.

4. Le suivi pédagogique qui se met à penser

Logique : Un déclencheur temporel (tous les jours à 18h) qui scanne un Sheet. Si un élève décroche, le script envoie un mail au tuteur et crée un événement dans son Google Calendar.

5. Les dossiers d’évaluation qui s’assemblent tout seuls

Logique : Un bouton qui, pour chaque élève d'un Sheet, va chercher tous ses documents dans un dossier Drive, les copie et les assemble dans un "Dossier Final" partagé au jury.

Conclusion : Votre Nouveau Rôle

Vous l'avez vu : le code est complexe, mais la demande est simple.

Votre valeur ajoutée n'est plus de savoir écrire function onEdit(e). Votre valeur ajoutée est de pouvoir imaginer un processus comme "Quand le statut passe à 'Prêt', prends ce modèle, remplace ce texte, et range-le ici."

L'IA est un traducteur ultra-rapide entre votre besoin métier et le langage machine. Votre seule limite est désormais la clarté de votre pensée.