Layanan Grup Cloud Identity Lanjutan

Layanan Cloud Identity Groups (CIG) lanjutan memungkinkan Anda menggunakan CIG API di Apps Script.

Referensi

Untuk mengetahui informasi mendetail tentang layanan ini, lihat dokumentasi referensi untuk CIG API. Seperti semua layanan lanjutan di Apps Script, layanan CIG lanjutan menggunakan objek, metode, dan parameter yang sama dengan API publik. Untuk informasi selengkapnya, lihat Cara menentukan tanda tangan metode.

Kode Contoh

Fungsi helper berikut menggunakan versi v1 API.

Buat Grup

Untuk membuat Grup Google, panggil groups.create dengan instance resource grup baru. Instance grup harus menyertakan groupKey, parent, dan label yang ditetapkan ke cloudidentity.googleapis.com/groups.discussion_forum. Anda juga perlu menetapkan parameter initialGroupConfig, yang menentukan pemilik awal grup. Anda dapat menggunakan nilai berikut untuk parameter ini:

WITH_INITIAL_OWNER: Menjadikan orang yang mengirim permintaan sebagai pemilik grup.

EMPTY: Membuat grup tanpa pemilik awal. Anda hanya dapat menggunakan nilai ini jika Anda adalah Admin Super atau Admin Grup Google Workspace. Untuk mengetahui informasi selengkapnya tentang peran Google Workspace, lihat peran administrator standar.

Contoh berikut menunjukkan cara membuat grup sehingga pengguna menjadi pemilik grup:

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

Menelusuri Grup

Untuk menelusuri Grup Google, panggil groups.search dengan string kueri. Untuk menelusuri semua grup, berikan 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));
}

Menambahkan Keanggotaan ke Grup

Setelah grup ada, Anda dapat membuat keanggotaan untuk grup tersebut. Metode ini memerlukan resource membership dan string resource name induk. Nilai sebelumnya dapat diperoleh dengan mencari grup melalui metode lookup.

Metode helper berikut menunjukkan contoh penambahan keanggotaan ke grup. expiryDetail adalah kolom opsional yang dapat ditambahkan untuk menetapkan masa berlaku keanggotaan. Nilai preferredMemberKey adalah alamat email anggota.

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

Mendapatkan Langganan dari Anggota

Gunakan metode groups.memberships.searchDirectGroups untuk menelusuri induk langsung anggota.

Metode helper berikut menunjukkan contoh melakukan iterasi pada keanggotaan langsung anggota tertentu.

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

Mendapatkan Keanggotaan dari Grup

Gunakan metode groups.memberships.list untuk mencantumkan anggota grup.

groupId: ID numerik grup yang anggotanya ingin Anda cantumkan. Untuk menemukan ID satu grup, gunakan metode groups.lookup. Untuk melihat semua ID grup dalam pelanggan atau namespace, gunakan metode 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);
  }
}