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



Dans l’environnement dynamique de Google Workspace, les administrateurs sont souvent confrontés au défi de gérer efficacement les membres des Google Groups.

Que ce soit pour ajouter de nouveaux membres suite à l’arrivée de nouveaux collaborateurs, ou pour supprimer les accès en cas de départ, cette tâche peut vite devenir fastidieuse.

Heureusement, Google Apps Script offre une solution puissante pour automatiser ces processus, en permettant de traiter les demandes d’ajout et de suppression directement depuis un formulaire et une feuille de calcul Google Sheets récupérant les saisies

Préparation du formulaire

La première étape consiste à construire le formulaire depuis l’URL https://form.new.
Vous devez ajouter les 3 champs suivants :

  1. Adresse mail (cible) : L’e-mail de la personne à ajouter ou à supprimer du groupe.
  2. Compte Google Groups : L’e-mail du groupe concerné.
  3. Action à réaliser : Indique si la demande est un « Ajout » ou une « Suppression« .

Préparation de la feuille de calcul

La seconde étape consiste à visualiser une feuille de calcul Google Sheets qui reçoit les saisies. Cette feuille comprendra les colonnes suivantes :

  1. Horodateur : Date et heure de la demande.
  2. Adresse e-mail (demandeur) : L’e-mail de la personne faisant la demande.
  3. Adresse mail (cible) : L’e-mail de la personne à ajouter ou à supprimer du groupe.
  4. Compte Google Groups : L’e-mail du groupe concerné.
  5. Action à réaliser : Indique si la demande est un « Ajout » ou une « Suppression ».
  6. Statut de la demande : Pour suivre le traitement de la demande.
  7. Réponse du traitement : Pour indiquer le résultat du traitement.

Les champs Statut de la demande et Réponse du traitement sont à saisir ; les autres sont automatiquement générés.

Le script de traitement

Pour automatiser le traitement des demandes, nous utiliserons Google Apps Script, un outil puissant permettant d’ajouter des fonctionnalités personnalisées à votre espace Google Workspace. Voici un aperçu des fonctions principales de notre script :

Fonction traiterDemandesGroupe

Cette fonction parcourt la feuille de calcul, identifie les demandes non traitées, et exécute l’action appropriée (ajout ou suppression) en utilisant les fonctions ajoutMembre ou suppressionMembre. Elle met ensuite à jour la feuille avec le statut de la demande et envoie un e-mail au demandeur pour l’informer du résultat.

function traiterDemandesGroupe() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var range = sheet.getDataRange();
  var values = range.getValues();
  
  // Indices des colonnes
  var emailDemandeurIndex = 1;
  var emailCibleIndex = 2;
  var emailGroupeIndex = 3;
  var actionIndex = 4;
  var statutIndex = 5; // Statut de la demande
  var reponseIndex = 6; // Réponse du traitement
  
  for (var i = 1; i < values.length; i++) { // Commence à 1 pour ignorer l'en-tête
    var row = values[i];
    var emailDemandeur = row[emailDemandeurIndex];
    var emailCible = row[emailCibleIndex];
    var emailGroupe = row[emailGroupeIndex];
    var action = row[actionIndex];
    var statut = row[statutIndex];
    
    // Ignorer les lignes déjà traitées
    if (statut !== "") continue;
    
    var reponse;
    
    if (action === "Ajout") {
      reponse = ajoutMembre(emailCible, emailGroupe);
    } else if (action === "Suppression") {
      reponse = suppressionMembre(emailCible, emailGroupe);
    }
    
    // Mise à jour de la feuille de calcul avec le statut et la réponse
    statut = reponse === 'Traitement ok' ? 'Traitée' : 'Erreur';
    sheet.getRange(i + 1, statutIndex + 1).setValue(statut);
    sheet.getRange(i + 1, reponseIndex + 1).setValue(reponse);
    
    // Envoi de l'email au demandeur
    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é " + statut.toLowerCase() + ".<br>Réponse du traitement : " + reponse + "<br><br>Cordialement."
    });
  }
}

Fonctions ajoutMembre et suppressionMembre

Ces fonctions permettent respectivement d’ajouter ou de supprimer un membre d’un Google Group. Elles gèrent les opérations via l’API Admin SDK et retournent le résultat pour être traité par traiterDemandesGroupe.


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


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

Mise en place et sécurité

Pour utiliser ces scripts, vous devrez activer l’API Admin SDK dans votre projet Google Cloud Console et vous assurer que le compte utilisé pour exécuter le script dispose des autorisations nécessaires pour gérer les membres des Google Groups.

Il est également crucial de s’assurer que seules les personnes autorisées peuvent soumettre des demandes via la feuille de calcul, pour éviter tout abus ou modifications non autorisées.

Conclusion

L’automatisation de la gestion des membres de Google Groups à travers une feuille de calcul et Google Apps Script offre une solution flexible et efficace pour les administrateurs de Google Workspace. En réduisant le temps consacré à ces tâches répétitives, cet outil permet de se concentrer sur des activités à plus forte valeur ajoutée.

N’hésitez pas à personnaliser le script selon vos besoins spécifiques et à explorer davantage les possibilités offertes par Google Apps Script pour automatiser et optimiser votre environnement de travail.


Laisser un commentaire