Le service Cloud Identity Groups (CIG) avancé vous permet d'utiliser l'API CIG dans Apps Script.
Référence
Pour en savoir plus 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 CIG avancé utilise les mêmes objets, méthodes et paramètres que l'API publique. Pour en savoir plus, consultez la section Comment les signatures de méthode sont déterminées.
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 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
: rend la personne qui envoie la demande propriétaire du groupe.
EMPTY
: crée un groupe sans propriétaires initiaux. Vous ne pouvez utiliser cette valeur que si vous êtes super-administrateur Google Workspace ou administrateur de groupes. Pour en savoir plus sur les rôles Google Workspace, consultez 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 groups.search
avec une chaîne de requête. Pour rechercher tous les groupes, fournissez le cloudidentity.googleapis.com/groups.discussion_forum
label
.
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. La première valeur peut être obtenue en recherchant le groupe via la méthode lookup
.
La méthode d'assistance suivante montre comment ajouter une adhésion à 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);
}
}
Obtenir des souscriptions de la part 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 des adhésions 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 adhésions d'un groupe
Utilisez la méthode groups.memberships.list
pour lister les membres d'un groupe.
groupId
: ID numérique du groupe pour lequel vous souhaitez lister les membres. Pour trouver l'ID d'un seul 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);
}
}