고급 Cloud Identity Groups (CIG) 서비스를 사용하면 Apps Script에서 CIG API를 사용할 수 있습니다.
참조
이 서비스에 관한 자세한 내용은 CIG API의 참조 문서를 참고하세요. Apps Script의 모든 고급 서비스와 마찬가지로 고급 CIG 서비스는 공개 API와 동일한 객체, 메서드, 매개변수를 사용합니다. 자세한 내용은 메서드 서명이 결정되는 방식을 참고하세요.
샘플 코드
다음 도우미 함수는 API의 버전 v1을 사용합니다.
그룹 만들기
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);
}
}