Servizio Cloud Identity Groups avanzato

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

Riferimento

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

Codice di esempio

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

Crea un gruppo

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

WITH_INITIAL_OWNER: rende la persona che invia la richiesta proprietaria del gruppo.

EMPTY: crea un gruppo senza proprietari iniziali. Puoi utilizzare questo valore solo se sei un super amministratore o un amministratore di gruppi di Google Workspace. Per ulteriori informazioni sui ruoli di Google Workspace, consulta i ruoli amministrativi predefiniti.

L'esempio seguente mostra una funzione di supporto per creare un 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: "EMPTY" };

  try {
    const response = groups.create(group, optionalArgs);
    console.log(response);
  } catch (error) {
    console.error(error);
  }
}

Cercare un gruppo

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

Aggiungere un'appartenenza a un gruppo

Una volta creato un gruppo, puoi creare le relative iscrizioni. Questo metodo richiede una risorsa membership e la stringa name della risorsa principale. Il primo valore può essere ottenuto cercando il gruppo tramite il metodo lookup.

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'abbonamento. 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);
  }
}

Ricevere abbonamenti da un membro

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

Il seguente metodo di supporto mostra un esempio di iterazione degli abbonamenti diretti 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);
  }
}

Recuperare le iscrizioni da un gruppo

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

groupId: l'ID numerico del gruppo per cui vuoi elencare i membri. Per trovare l'ID di un singolo gruppo, utilizza il metodo groups.lookup. Per visualizzare tutti gli ID gruppo in un cliente o uno spazio dei nomi, utilizza il metodo 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);
  }
}