Automatiser la gestion des membres de Google Groups avec Google Apps Script

Dans l’univers dynamique de Google Workspace, la gestion des membres de Google Groups peut rapidement devenir une tâche complexe et chronophage pour les administrateurs. Ajouter de nouveaux collaborateurs ou supprimer des accès lors de départs, peut s’avérer fastidieux si ce processus reste manuel.

Heureusement, Google Apps Script offre une solution efficace et automatisée pour simplifier ces opérations. Grâce à cet outil, les demandes d’ajout et de suppression de membres peuvent être gérées directement à partir d’un formulaire et d’une feuille de calcul Google Sheets.

1. Création du formulaire

La première étape consiste à créer un formulaire en visitant https://form.new. Ajoutez les 3 champs suivants :

Adresse e-mail (cible) : L’adresse e-mail de la personne à ajouter ou supprimer du groupe.

Compte Google Groups : L’adresse e-mail du groupe concerné.

Action à réaliser : Indiquez si la demande est un “Ajout” ou une “Suppression”.

2. Mise en place de la feuille de calcul

Ensuite, configurez une feuille de calcul Google Sheets pour recueillir les réponses. Les colonnes nécessaires sont les suivantes :

Horodateur : Date et heure de la demande.

Adresse e-mail (demandeur) : L’e-mail de la personne ayant effectué la demande.

Adresse e-mail (cible) : L’e-mail de la personne à ajouter ou supprimer du groupe.

Compte Google Groups : L’e-mail du groupe concerné.

Action à réaliser : “Ajout” ou “Suppression”.

Statut de la demande : Suivi de l’avancement de la demande.

Réponse du traitement : Résultat du traitement.

Notez que les champs “Statut de la demande” et “Réponse du traitement” sont mis à jour par le script.

3. Automatisation avec Google Apps Script

Pour automatiser le traitement des demandes, nous allons utiliser Google Apps Script, un outil puissant qui permet d’étendre les fonctionnalités de Google Workspace. Voici comment fonctionne notre script :

Fonction principale : traiterDemandesGroupe

Cette fonction lit la feuille de calcul, identifie les demandes non traitées, et exécute l’action appropriée (ajout ou suppression) via les fonctions ajoutMembre ou suppressionMembre. Elle met ensuite à jour le statut de la demande et envoie un e-mail de confirmation à l’auteur de la demande.

function traiterDemandesGroupe() {
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  const values = sheet.getDataRange().getValues();
  
  // Indices des colonnes
  const [emailDemandeurIndex, emailCibleIndex, emailGroupeIndex, actionIndex, statutIndex, reponseIndex] = [1, 2, 3, 4, 5, 6];
  
  // Ignorer l'en-tête et traiter chaque ligne
  values.slice(1).forEach((row, rowIndex) => {
    const [emailDemandeur, emailCible, emailGroupe, action, statut] = [
      row[emailDemandeurIndex],
      row[emailCibleIndex],
      row[emailGroupeIndex],
      row[actionIndex],
      row[statutIndex]
    ];

    // Ignorer les demandes déjà traitées
    if (statut) return;
    
    const reponse = (action === "Ajout") 
      ? ajoutMembre(emailCible, emailGroupe) 
      : suppressionMembre(emailCible, emailGroupe);
    
    // Mise à jour de la feuille de calcul
    const statutValue = reponse === 'Traitement ok' ? 'Traitée' : 'Erreur';
    sheet.getRange(rowIndex + 2, statutIndex + 1).setValue(statutValue);
    sheet.getRange(rowIndex + 2, reponseIndex + 1).setValue(reponse);
    
    // Notification par e-mail
    MailApp.sendEmail({
      to: emailDemandeur,
      subject: "Résultat de votre demande de modification de groupe Google",
      htmlBody: `
        Bonjour,<br><br>
        Votre demande de ${action.toLowerCase()} pour le membre ${emailCible} dans le groupe ${emailGroupe} a été ${statutValue.toLowerCase()}.<br>
        Réponse du traitement : ${reponse}<br><br>
        Cordialement.
      `
    });
  });
}

Fonctions d’ajout et de suppression de membres

Les fonctions ajoutMembre et suppressionMembre interagissent avec l’API Admin SDK pour gérer les membres du Google Group :

function ajoutMembre(userEmail, groupEmail) {
  const member = { email: userEmail, role: 'MEMBER' };
  
  try {
    AdminDirectory.Members.insert(member, groupEmail);
    Logger.log(`Utilisateur ${userEmail} ajouté au groupe ${groupEmail}.`);
    return 'Traitement ok';
  } catch (error) {
    Logger.log(error.message); 
    return LanguageApp.translate(error.message, 'en', 'fr');
  }
}

function suppressionMembre(userEmail, groupEmail) {
  try {
    AdminDirectory.Members.remove(groupEmail, userEmail);
    Logger.log(`Utilisateur ${userEmail} supprimé du groupe ${groupEmail}.`);
    return 'Traitement ok';
  } catch (error) {
    Logger.log(error.message);
    return LanguageApp.translate(error.message, 'en', 'fr');
  }
}

4. Mise en place et sécurité

Avant d’exécuter ces scripts, activez l’API Admin SDK dans Google Cloud Console. Vérifiez également que le compte qui exécute le script dispose des droits nécessaires pour gérer les Google Groups.

Il est important de restreindre l’accès à la feuille de calcul pour garantir que seules les personnes autorisées puissent soumettre des demandes, évitant ainsi tout abus.

Automatiser la gestion des membres de Google Groups à l’aide de Google Sheets et Google Apps Script permet aux administrateurs de gagner en efficacité et de se concentrer sur des tâches à plus forte valeur ajoutée. Cet outil flexible et personnalisable s’adapte à vos besoins, et vous pouvez l’enrichir selon les spécificités de votre environnement de travail.

Si cet article vous a été utile, consultez également notre guide : Maîtriser les variables dans Google Apps Script : const, let, et var, pour approfondir vos connaissances sur l’utilisation des variables dans vos scripts.