Erweiterter Cloud Identity Groups-Dienst

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

Referenz

Weitere 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 So werden Methodensignaturen ermittelt.

Beispielcode

Die folgenden Hilfsfunktionen verwenden die Version v1 der API.

Gruppe erstellen

Rufen Sie zum Erstellen einer Google-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, mit dem der ursprüngliche Inhaber der Gruppe definiert wird. Sie können die folgenden Werte für diesen Parameter verwenden:

WITH_INITIAL_OWNER: Die Person, die die Anfrage sendet, wird zum Eigentümer der Gruppe.

EMPTY: Damit wird eine Gruppe ohne Eigentümer erstellt. Sie können diesen Wert nur verwenden, wenn Sie Google Workspace-Super Admin oder Gruppenadministrator sind. Weitere Informationen zu Google Workspace-Rollen finden Sie unter „Vordefinierte Administratorrollen“.

Im folgenden Beispiel wird gezeigt, wie eine Gruppe so erstellt wird, dass der Nutzer der Eigentümer 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

Rufen Sie groups.search mit einem Abfragestring auf, um nach einer Google-Gruppe zu suchen. 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 ist eine membership-Ressource und der name-String der übergeordneten Ressource erforderlich. Der erste Wert kann durch Aufrufen der Gruppe über die Methode lookup abgerufen werden.

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

Kanalmitgliedschaft von einem Mitglied erhalten

Verwenden Sie die Methode groups.memberships.searchDirectGroups, um nach den unmittelbaren Eltern eines Mitglieds zu suchen.

Die folgende Hilfsmethode zeigt ein Beispiel für die Iteration durch die 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 in 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. Verwenden Sie die Methode groups.lookup, um die ID einer einzelnen Gruppe zu ermitteln. 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);
  }
}