Servizio Cloud Identity Groups avanzato

accedere all'API CIG in Apps Script.

Il servizio avanzato Cloud Identity Groups (CIG) ti consente di utilizzare l' API CIG in Google Apps Script.

Questo è un servizio avanzato che deve essere abilitato prima dell'uso.

Riferimento

Per informazioni dettagliate su questo servizio, consulta la documentazione di riferimento per l'API CIG. Come tutti i servizi avanzati in Apps Script, il servizio CIG avanzato utilizza gli stessi oggetti, metodi e parametri dell'API pubblica. Per saperne di più, consulta Come vengono determinate le firme dei metodi.

Codice di esempio

Le seguenti funzioni di assistenza utilizzano la versione v1 dell'API.

Crea un gruppo

Per creare un Gruppo Google, chiama groups.create con un'istanza della nuova risorsa del gruppo. L'istanza del gruppo deve includere un groupKey, un parent e un label impostato su cloudidentity.googleapis.com/groups.discussion_forum. Devi anche impostare il parametro initialGroupConfig, che definisce il proprietario iniziale del gruppo. Puoi utilizzare i seguenti valori per questo parametro:

WITH_INITIAL_OWNER: rende la persona che invia la richiesta il proprietario del gruppo.

EMPTY: crea un gruppo senza proprietari iniziali. Puoi utilizzare questo valore solo se sei un super amministratore di Google Workspace o un amministratore di Gruppi Google. Per saperne di più sui ruoli di Google Workspace, consulta Ruoli amministrativi predefiniti.

L'esempio seguente mostra come creare un gruppo in modo che l'utente sia il proprietario del gruppo:

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

Cerca un gruppo

Per cercare un Gruppo Google, chiama groups.search con una stringa di query. Per cercare tutti i gruppi, fornisci il 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));
}

Aggiungi un'appartenenza a un gruppo

Dopo aver creato un gruppo, puoi creare le appartenenze. Questo metodo richiede una membership risorsa e la stringa name della risorsa padre. Il primo valore può essere ottenuto cercando il gruppo tramite il lookup metodo.

Il seguente metodo di assistenza mostra un esempio di aggiunta di un'appartenenza a un gruppo. expiryDetail è un campo facoltativo che può essere aggiunto per impostare una scadenza per l'appartenenza. Il valore di preferredMemberKey è l'indirizzo email del membro.

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

Recupera le appartenenze da un membro

Utilizza il groups.memberships.searchDirectGroups metodo per cercare i genitori immediati di un membro.

Il seguente metodo di assistenza mostra un esempio di iterazione tra le appartenenze dirette di un determinato membro.

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

Recupera le appartenenze da un gruppo

Utilizza il groups.memberships.list metodo per elencare i membri di un gruppo.

groupId: l'ID numerico del gruppo di cui vuoi elencare i membri. Per trovare l'ID di un singolo gruppo, utilizza il groups.lookup metodo. Per visualizzare tutti gli ID gruppo di un cliente o di uno spazio dei nomi, utilizza il groups.list metodo.

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