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