Service Cloud Identity Groups avancé

accéder à l'API CIG dans Apps Script.

Le service avancé Cloud Identity Groups (CIG) vous permet d'utiliser l' API CIG dans Google Apps Script.

Il s'agit d'un service avancé qui doit être activé avant utilisation.

Référence

Pour en savoir plus sur ce service, consultez la documentation de référence pour l'API CIG. Comme tous les services avancés dans 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 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 groups.create avec une instance de la nouvelle ressource de groupe. L'instance de groupe doit inclure un groupKey, un parent et un 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: la personne qui envoie la requête devient propriétaire du groupe.

EMPTY : crée un groupe sans propriétaire initial. Vous ne pouvez utiliser cette valeur que si vous êtes super-administrateur Google Workspace ou administrateur Google Groupes. Pour en savoir plus sur les rôles Google Workspace, consultez Rôles Administrateurs 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 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 membership ressource et la chaîne name de la ressource parente. La première valeur peut être obtenue en recherchant le groupe à l'aide de la lookup méthode.

La méthode d'assistance suivante montre un exemple d'ajout d'une adhésion à un groupe. expiryDetail est un champ facultatif qui peut être ajouté pour définir une date d'expiration pour l'adhésion. La valeur de preferredMemberKey est 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 les adhésions d'un membre

Utilisez la groups.memberships.searchDirectGroups méthode pour rechercher les parents immédiats d'un membre.

La méthode d'assistance suivante montre un exemple d'itération dans les 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 groups.memberships.list méthode 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 seul groupe, utilisez la groups.lookup méthode. Pour afficher tous les ID de groupe sous un client ou un espace de noms, utilisez la groups.list méthode.

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