Le service Cloud Identity Groups (CIG) avancé vous permet d'utiliser l'API CIG dans Apps Script.
Référence
Pour obtenir des informations détaillées sur ce service, consultez la documentation de référence de l'API CIG. Comme tous les services avancés d'Apps Script, le service avancé CIG utilise les mêmes objets, méthodes et paramètres que l'API publique. Pour en savoir plus, consultez Déterminer les signatures de méthode.
Exemple de code
Les fonctions d'assistance suivantes utilisent la version v1 de l'API.
Créer un groupe
Pour créer un groupe Google, appelez la méthode groups.create
avec une instance de la nouvelle ressource de groupe. L'instance de groupe doit inclure les paramètres groupKey
, parent
et label
définis sur cloudidentity.googleapis.com/groups.discussion_forum
.
Vous devez également définir le paramètre initialGroupConfig
, qui définit le propriétaire initial du groupe. Vous pouvez utiliser les valeurs suivantes pour ce paramètre :
WITH_INITIAL_OWNER
: fait de la personne qui envoie la demande le propriétaire du groupe.
EMPTY
: crée un groupe sans propriétaire initial. Vous ne pouvez utiliser cette valeur que si vous êtes un super-administrateur ou un administrateur de groupes Google Workspace. Pour en savoir plus sur les rôles Google Workspace, consultez la page sur les rôles d'administrateur prédéfinis.
L'exemple suivant montre comment créer un groupe dont l'utilisateur est le propriétaire :
const groups = CloudIdentityGroups.Groups;
function createGroup(groupId, parentId, displayName) {
const groupKey = { id: groupId };
const group = {
parent: "customerId/" + parentId,
displayName: displayName,
groupKey: groupKey,
// Set the label to specify creation of a Google Group.
labels: { "cloudidentity.googleapis.com/groups.discussion_forum": "" },
};
const optionalArgs = { initialGroupConfig: "WITH_INITIAL_OWNER" };
try {
const response = groups.create(group, optionalArgs);
console.log(response);
} catch (error) {
console.error(error);
}
}
Rechercher un groupe
Pour rechercher un groupe Google, appelez la méthode groups.search
avec une chaîne de requête. Pour rechercher tous les groupes, fournissez label
cloudidentity.googleapis.com/groups.discussion_forum
.
const groups = CloudIdentityGroups.Groups;
function searchGroup(customer_id) {
const search_query = `parent=='customerId/${customer_id}' && 'cloudidentity.googleapis.com/groups.discussion_forum' in labels`;
const search_group_request = groups.search({ query: search_query });
console.log(JSON.stringify(search_group_request));
}
Ajouter une adhésion à un groupe
Une fois qu'un groupe existe, vous pouvez lui créer des adhésions. Cette méthode nécessite une ressource membership
et la chaîne name
de la ressource parente. L'ancienne valeur peut être obtenue en recherchant le groupe à l'aide de la méthode lookup
.
La méthode d'assistance suivante montre un exemple d'ajout d'un membre à un groupe.
expiryDetail
est un champ facultatif qui peut être ajouté pour définir un délai d'expiration pour l'adhésion. La valeur de preferredMemberKey
correspond à l'adresse e-mail du membre.
const groups = CloudIdentityGroups.Groups;
function createMembership(namespace, groupId, memberKey) {
try {
// Given a group ID and namespace, retrieve the ID for parent group
const groupLookupResponse = groups.lookup({
'groupKey.id': groupId,
'groupKey.namespace': namespace
});
const groupName = groupLookupResponse.name;
// Create a membership object with a memberKey and a single role of type MEMBER
const membership = {
preferredMemberKey: { id: memberKey },
roles: [
{
name: "MEMBER",
expiryDetail: {
expireTime: "2025-10-02T15:01:23Z",
},
},
],
};
// Create a membership using the ID for the parent group and a membership object
const response = groups.Memberships.create(membership, groupName);
console.log(JSON.stringify(response));
} catch (e) {
console.error(e);
}
}
Recevoir des souscriptions d'un membre
Utilisez la méthode groups.memberships.searchDirectGroups
pour rechercher les parents immédiats d'un membre.
La méthode d'assistance suivante montre un exemple d'itération sur les appartenances directes d'un membre donné.
const groups = CloudIdentityGroups.Groups;
function searchMemberMemberships(memberId, pageSize) {
try {
let memberships = [];
let nextPageToken = '';
const withinParent = 'groups/-'; // This parameter sets the scope as "all groups"
do {
// Get page of memberships
const queryParams = {
query: `member_key_id == \'${memberId}\'`,
page_size: pageSize,
page_token: nextPageToken,
};
const response = groups.Memberships.searchDirectGroups(withinParent, queryParams);
memberships = memberships.concat(response.memberships);
// Set up next page
nextPageToken = response.nextPageToken;
} while (nextPageToken);
return memberships;
} catch(e) {
console.error(e);
}
}
Obtenir les membres d'un groupe
Utilisez la méthode groups.memberships.list
pour lister les membres d'un groupe.
groupId
: ID numérique du groupe dont vous souhaitez lister les membres. Pour trouver l'ID d'un groupe, utilisez la méthode groups.lookup
. Pour afficher tous les ID de groupe sous un client ou un espace de noms, utilisez la méthode groups.list
.
const groups = CloudIdentityGroups.Groups;
function listGroupMemberships(groupId, pageSize) {
try {
let membershipList = [];
let nextPageToken = '';
// Get group name
const groupName = groups.lookup({'groupKey.id': groupId}).name;
do {
// Get page of memberships
const queryParams = {
pageSize: pageSize,
pageToken: nextPageToken
}
const response = groups.Memberships.list(groupName, queryParams);
membershipList = membershipList.concat(response.memberships);
// Set up next page
nextPageToken = response.nextPageToken;
} while(nextPageToken);
return membershipList;
} catch (error) {
console.error(error);
}
}