Pourquoi ce script?
Nous avons reçu au support il y a quelques semaines une demande d’un client souhaitant extraire tous les groupes de sa plateforme Google Workspace avec les paramètres de partage et de sécurité de ceux-ci, ce qui n’est pas encore nativement possible.
J’ai donc eu l’idée de créer un Google Apps Script listant tous les groupes de la plateforme, ainsi que certaines de leurs permissions et de mettre en forme ces informations dans un fichier Google Sheets.
Fonctionnement
Ce script utilise différentes API pour :
- Extraire le nom de domaine de l’adresse mail de l’administrateur exécutant le script
- Lister les groupes
- Extraire les privilèges des groupes
- Créer et modifier la feuille de calcul
Prérequis
Le compte qui exécutera le script devra disposer au minimum du droit de lecture sur les groupes du domaine :
Modularité
Il est tout à fait possible de modifier le script pour afficher d’autres paramètres de groupes, ou encore renommer les colonnes dans la feuille de calcul. Pour cela il faut dans un premier temps ajouter/modifier les colonnes dans le tableau “response” dans la fonction listAllGroups :
function listAllGroups() {
var pageToken ;
var page ;
var response = [] ;
response.push( [‘Email ‘ , « WhoCanContactOwner » , « WhoCanViewMembership » , « WhoCanMoveTopicsIn » , « WhoCanMoveTopicsOut » , « WhoCanPostMessage » , « WhoCanModerateMembers » , « whoCanModifyMembers » , « WhoCanJoin » , « AllowExternalMembers » ] )
Toujours dans la même fonction, définir dans le même ordre que les colonnes paramétrées précédemment, les permissions que vous souhaitez afficher dans le tableau. Ce dernier sera par la suite injecté dans la feuille de calcul :
For (var i = 0 ; i < groups.length; i++) {
var group = groups [ i ] ;
var settings = getGroupSettings(group.email) ;
response.push([group.email, settings.whoCanContactOwner, settings.whoCanViewMembership, settings.whoCanMoveTopicsIn, settings.whoCanMoveTopicsOut, settings.whoCanPostMessage, settings.whoCanModerateMembers, settings.whoCanModifyMembers, settings.whoCanJoin, settings.allowExternalMembers ] ) ; }
Voir tous les paramètres de groupe : https://developers.google.com/admin-sdk/groups-settings/v1/reference/groups#json
Résultat
L’exécution du script résulte d’un lien menant au fichier Google Sheets créé avec l’adresse mail de tous les groupes et leurs permissions :
Le fichier en question :
Liens
Lien vers le Google Apps Script : https://script.google.com/d/1fIQwJa1bJFQzHNF9MTFF5F9TcLA6Kxek5CC9FyxcCVp7u3wvzAs1NKLp/edit?usp=sharing
Une fois sur le script, vous pouvez le copier comme ceci :
A noter qu’il faut autoriser certains services à accéder à votre compte :
Lien vers le GitHub Devoteam G Cloud : https://github.com/devoteam-g-cloud/apps-script/tree/master/GoogleGroups/ListGroupsAndPermissions