Erweiterter Cloud Identity Groups-Dienst

Mit dem erweiterten Cloud Identity Groups-Dienst (CIG) können Sie die CIG API in Apps Script verwenden.

Referenz

Ausführliche Informationen zu diesem Dienst finden Sie in der Referenzdokumentation für die CIG API. Wie alle erweiterten Dienste in Apps Script verwendet der erweiterte CIG-Dienst dieselben Objekte, Methoden und Parameter wie die öffentliche API. Weitere Informationen finden Sie unter Methodensignaturen.

Beispielcode

Die folgenden Hilfsfunktionen verwenden Version 1 der API.

Gruppe erstellen

Rufen Sie zum Erstellen einer Google Groups-Gruppe groups.create mit einer Instanz der neuen Gruppenressource auf. Die Gruppeninstanz muss einen groupKey, einen parent und ein label enthalten, das auf cloudidentity.googleapis.com/groups.discussion_forum festgelegt ist. Außerdem müssen Sie den Parameter initialGroupConfig festlegen, der den ursprünglichen Inhaber der Gruppe definiert. Sie können die folgenden Werte für diesen Parameter verwenden:

WITH_INITIAL_OWNER: Die Person, die die Anfrage sendet, wird zum Inhaber der Gruppe.

EMPTY: Erstellt eine Gruppe ohne anfängliche Inhaber. Sie können diesen Wert nur verwenden, wenn Sie ein Google Workspace-Super Admin oder ein Gruppenadministrator sind. Weitere Informationen zu Google Workspace-Rollen finden Sie unter „Vordefinierte Administratorrollen“.

Das folgende Beispiel zeigt, wie Sie eine Gruppe erstellen, in der der Nutzer der Inhaber der Gruppe ist:

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

Nach einer Gruppe suchen

Für die Suche nach einer Google Groups-Gruppe rufen Sie groups.search mit einem Abfragestring auf. Wenn Sie nach allen Gruppen suchen möchten, geben Sie label cloudidentity.googleapis.com/groups.discussion_forum an.

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

Mitgliedschaft in eine Gruppe aufnehmen

Sobald eine Gruppe vorhanden ist, können Sie Mitgliedschaften für die Gruppe erstellen. Für diese Methode sind eine membership-Ressource und der name-String der übergeordneten Ressource erforderlich. Der erste Wert kann abgerufen werden, indem Sie die Gruppe mit der Methode lookup suchen.

Die folgende Hilfsmethode zeigt ein Beispiel für das Hinzufügen einer Mitgliedschaft zu einer Gruppe. expiryDetail ist ein optionales Feld, das hinzugefügt werden kann, um eine Ablauffrist für die Mitgliedschaft festzulegen. Der Wert von preferredMemberKey ist die E-Mail-Adresse des Mitglieds.

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

Mitgliedschaften von Mitgliedern erhalten

Mit der Methode groups.memberships.searchDirectGroups können Sie nach den direkten Eltern eines Mitglieds suchen.

Die folgende Hilfsmethode zeigt ein Beispiel für das Durchlaufen der direkten Mitgliedschaften eines bestimmten Mitglieds.

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

Mitgliedschaften einer Gruppe abrufen

Verwenden Sie die Methode groups.memberships.list, um die Mitglieder einer Gruppe aufzulisten.

groupId: Die numerische ID der Gruppe, für die Sie Mitglieder auflisten möchten. Wenn Sie die ID einer einzelnen Gruppe ermitteln möchten, verwenden Sie die Methode groups.lookup. Wenn Sie alle Gruppen-IDs unter einem Kunden oder Namespace aufrufen möchten, verwenden Sie die Methode 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);
  }
}