Zaawansowana usługa Cloud Identity Groups

Usługa zaawansowanych grup Cloud Identity (CIG) umożliwia korzystanie z interfejsu CIG API w Google Apps Script.

Jest to usługa zaawansowana, którą należy włączyć przed użyciem.

Dokumentacja

Szczegółowe informacje o tej usłudze znajdziesz w dokumentacji interfejsu CIG API. Podobnie jak wszystkie usługi zaawansowane w Apps Script, usługa zaawansowana CIG korzysta z tych samych obiektów, metod i parametrów co publiczny interfejs API. Więcej informacji znajdziesz w artykule Jak określa się sygnatury metod.

Przykładowy kod

Te funkcje pomocnicze korzystają z wersji 1 interfejsu API.

Utwórz grupę

Aby utworzyć Grupę dyskusyjną Google, wywołaj groups.create z instancją nowego zasobu grupy. Instancja grupy musi zawierać groupKey, parent i label ustawione na cloudidentity.googleapis.com/groups.discussion_forum. Musisz też ustawić parametr initialGroupConfig, który określa początkowego właściciela grupy. W przypadku tego parametru możesz użyć tych wartości:

WITH_INITIAL_OWNER: osoba wysyłająca prośbę staje się właścicielem grupy.

EMPTY: tworzy grupę bez początkowych właścicieli. Tej wartości możesz użyć tylko wtedy, gdy jesteś superadministratorem Google Workspace lub administratorem Grup dyskusyjnych Google. Więcej informacji o rolach Google Workspace znajdziesz w artykule Gotowe role administratora.

Poniższy przykład pokazuje, jak utworzyć grupę, której właścicielem jest użytkownik:

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

Wyszukaj grupę

Aby wyszukać Grupę dyskusyjną Google, wywołaj groups.search z ciągiem zapytania. Aby wyszukać wszystkie grupy, podaj 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));
}

Dodaj członkostwo do grupy

Gdy grupa już istnieje, możesz utworzyć dla niej członkostwa. Ta metoda wymaga zasobu membership i ciągu name zasobu nadrzędnego. Tę pierwszą wartość można uzyskać, wyszukując grupę za pomocą metody lookup.

Ta metoda pomocnicza pokazuje, jak dodać członkostwo do grupy. expiryDetail to pole opcjonalne, które można dodać, aby ustawić datę wygaśnięcia członkostwa. Wartość preferredMemberKey to adres e-mail członka.

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

Pobierz członkostwa od członka

Aby wyszukać bezpośrednich rodziców członka, użyj groups.memberships.searchDirectGroups metody.

Ta metoda pomocnicza pokazuje, jak iterować po bezpośrednich członkostwach danego członka.

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

Pobierz członkostwa z grupy

Aby wyświetlić listę członków grupy, użyj groups.memberships.list metody.

groupId: numeryczny identyfikator grupy, której członków chcesz wyświetlić. Aby znaleźć identyfikator pojedynczej grupy, użyj groups.lookup metody. Aby zobaczyć wszystkie identyfikatory grup w ramach klienta lub przestrzeni nazw, użyj groups.list metody.

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