Zaawansowana usługa Cloud Identity Groups

Zaawansowana usługa Cloud Identity Groups (CIG) umożliwia korzystanie z interfejsu CIG API w Apps Script.

Dokumentacja

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

Przykładowy kod

Te funkcje pomocnicze korzystają z wersji 1 interfejsu API.

Utwórz grupę

Aby utworzyć grupę Google, wywołaj metodę groups.create z instancją nowego zasobu grupy. Instancja grupy musi zawierać elementy groupKey, parentlabel 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: sprawia, że osoba wysyłająca prośbę staje się właścicielem grupy.

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

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

Wyszukiwanie grupy

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

Dodawanie członkostwa do grupy

Po utworzeniu grupy możesz utworzyć dla niej członkostwo. Ta metoda wymaga membershipzasobu i ciągu name zasobu nadrzędnego. Poprzednią wartość można uzyskać, wyszukując grupę za pomocą metody lookup.

Poniższa metoda pomocnicza pokazuje przykład dodawania członkostwa do grupy. expiryDetail to pole opcjonalne, które można dodać, aby ustawić datę wygaśnięcia członkostwa. Wartością preferredMemberKey jest 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);
  }
}

Otrzymywanie wspierania od wspierającego

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

Poniższa metoda pomocnicza pokazuje przykład iteracji po bezpośrednich członkostwach danego użytkownika.

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

Pobieranie członkostwa w grupie

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

groupId: liczbowy identyfikator grupy, której członków chcesz wyświetlić. Aby znaleźć identyfikator pojedynczej grupy, użyj metody groups.lookup. Aby wyświetlić wszystkie identyfikatory grup w przypadku klienta lub przestrzeni nazw, użyj metody 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);
  }
}