Service Cloud Identity Groups avancé

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);
  }
}