Zaawansowana usługa Cloud Identity Groups

uzyskać dostęp do interfejsu CIG API w Apps Script;

Zaawansowana usługa Cloud Identity Groups (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 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. Z tej wartości możesz korzystać tylko wtedy, gdy jesteś superadministratorem Google Workspace lub administratorem Grup dyskusyjnych Google. Więcej informacji o rolach w Google Workspace znajdziesz w artykule Gotowe role administratora.

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

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 znak 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łonkostwa. Ta metoda wymaga membershipzasobu i ciągu znaków zasobu nadrzędnego name. 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);
  }
}

Kupowanie wspierania kanału 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);
  }
}