利用高级 Cloud Identity Groups (CIG) 服务,您可以在 Apps 脚本中使用 CIG API。
参考
如需详细了解此服务,请参阅 CIG API 的参考文档。与 Apps 脚本中的所有高级服务一样,高级 CIG 服务使用的对象、方法和参数均与公共 API 相同。如需了解详情,请参阅方法签名是如何确定的。
示例代码
以下辅助函数使用 API 的版本 1。
创建小组
如需创建 Google 群组,请使用新群组资源的实例调用 groups.create
。群组实例必须包含设置为 cloudidentity.googleapis.com/groups.discussion_forum
的 groupKey
、parent
和 label
。您还需要设置 initialGroupConfig
参数,该参数用于定义群组的初始所有者。您可以为此参数使用以下值:
WITH_INITIAL_OWNER
:使请求发送者成为相应群组的所有者。
EMPTY
:创建没有初始所有者的群组。只有当您是 Google Workspace 超级用户或群组管理员时,才能使用此值。如需详细了解 Google Workspace 角色,请参阅预先创建的管理员角色。
以下示例展示了如何创建群组,以便用户成为该群组的所有者:
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);
}
}
搜索群组
如需搜索 Google 群组,请使用查询字符串调用 groups.search
。如需搜索所有群组,请提供 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));
}
向群组添加成员资格
群组存在后,可以为它创建成员资格。此方法需要 membership
资源和父资源的 name
字符串。可以通过 lookup
方法查找群组来获取前一个值。
以下辅助方法展示了如何向群组添加成员资格。
expiryDetail
是可选字段,可添加以设置会员资格的到期时间。preferredMemberKey
的值是会员的电子邮件地址。
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);
}
}
从会员处获取会员资格
使用 groups.memberships.searchDirectGroups
方法搜索成员的直系父级。
以下辅助方法展示了如何遍历给定成员的直接会员资格。
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);
}
}
从群组中获取成员资格
使用 groups.memberships.list
方法列出群组的成员。
groupId
:您要列出其成员的群组的数字 ID。如需查找单个群组的 ID,请使用 groups.lookup
方法。如需查看客户或命名空间下的所有群组 ID,请使用 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);
}
}