Dịch vụ Cloud Identity Groups (CIG) nâng cao cho phép bạn sử dụng CIG API trong Apps Script.
Tài liệu tham khảo
Để biết thông tin chi tiết về dịch vụ này, hãy xem tài liệu tham khảo cho CIG API. Giống như tất cả các dịch vụ nâng cao trong Apps Script, dịch vụ CIG nâng cao sử dụng cùng các đối tượng, phương thức và tham số như API công khai. Để biết thêm thông tin, hãy xem bài viết Cách xác định chữ ký phương thức.
Mã mẫu
Các hàm trợ giúp sau đây sử dụng phiên bản 1 của API.
Tạo Nhóm
Để tạo một Nhóm Google, hãy gọi groups.create
bằng một phiên bản của tài nguyên nhóm mới. Phiên bản nhóm phải có groupKey
, parent
và label
được đặt thành cloudidentity.googleapis.com/groups.discussion_forum
.
Bạn cũng cần đặt tham số initialGroupConfig
. Tham số này xác định chủ sở hữu ban đầu của nhóm. Bạn có thể sử dụng các giá trị sau cho tham số này:
WITH_INITIAL_OWNER
: Đặt người gửi yêu cầu làm chủ sở hữu của nhóm.
EMPTY
: Tạo một nhóm không có chủ sở hữu ban đầu. Bạn chỉ có thể sử dụng giá trị này nếu là Quản trị viên cấp cao hoặc Quản trị viên nhóm của Google Workspace. Để biết thêm thông tin về các vai trò trong Google Workspace, hãy xem các vai trò quản trị viên được tạo sẵn.
Ví dụ sau đây cho thấy cách tạo một nhóm sao cho người dùng là chủ sở hữu của nhóm:
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);
}
}
Tìm kiếm nhóm
Để tìm một Nhóm trên Google, hãy gọi groups.search
bằng một chuỗi truy vấn. Để tìm kiếm tất cả các nhóm, hãy cung cấp 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));
}
Thêm tư cách thành viên vào một nhóm
Sau khi tạo một nhóm, bạn có thể tạo tư cách thành viên cho nhóm đó. Phương thức này yêu cầu một tài nguyên membership
và chuỗi name
tài nguyên của thành phần mẹ. Bạn có thể lấy giá trị trước đó bằng cách tra cứu nhóm thông qua phương thức lookup
.
Phương thức trợ giúp sau đây cho thấy ví dụ về cách thêm một thành viên vào một nhóm.
expiryDetail
là một trường không bắt buộc mà bạn có thể thêm để đặt thời hạn hết hạn cho gói thành viên. Giá trị của preferredMemberKey
là địa chỉ email của thành viên.
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);
}
}
Lấy gói hội viên của hội viên
Sử dụng phương thức groups.memberships.searchDirectGroups
để tìm kiếm cha mẹ ruột của một thành viên.
Phương thức trợ giúp sau đây cho thấy ví dụ về cách lặp lại các thành viên trực tiếp của một thành viên nhất định.
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);
}
}
Lấy thông tin về tư cách thành viên của một nhóm
Sử dụng phương thức groups.memberships.list
để liệt kê các thành viên của một nhóm.
groupId
: Mã nhận dạng bằng số của nhóm mà bạn muốn liệt kê thành viên. Để tìm mã nhận dạng của một nhóm, hãy sử dụng phương thức groups.lookup
. Để xem tất cả mã nhóm trong một khách hàng hoặc không gian tên, hãy sử dụng phương thức 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);
}
}