App Script에서 CIG API에 액세스합니다.
고급 Cloud Identity 그룹 (CIG) 서비스를 사용하면 CIG API를 Google App Script에서 사용할 수 있습니다.
이 서비스는 사용하기 전에 사용 설정해야 하는 고급 서비스입니다.
참조
이 서비스에 대한 자세한 내용은 CIG API의 참조 문서를 확인하세요. App Script의 모든 고급 서비스와 마찬가지로 고급 CIG 서비스는 공개 API와 동일한 객체, 메서드, 매개변수를 사용합니다. 자세한 내용은 메서드 서명이 결정되는 방식을 참고하세요.
샘플 코드
다음 도우미 함수는 API의 v1 버전 을 사용합니다.
그룹 만들기
Google 그룹을 만들려면 새 그룹 리소스의 인스턴스로
groups.create
를 호출합니다. 그룹 인스턴스에는 groupKey, parent, label이 cloudidentity.googleapis.com/groups.discussion_forum으로 설정되어 있어야 합니다.
그룹의 초기 소유자를 정의하는 initialGroupConfig 매개변수도 설정해야 합니다. 이 매개변수에는 다음 값을 사용할 수 있습니다.
WITH_INITIAL_OWNER: 요청을 보내는 사용자를 그룹의 소유자로 만듭니다.
EMPTY: 초기 소유자가 없는 그룹을 만듭니다. 이 값은 Google Workspace 최고 관리자 또는 Google 그룹 관리자인 경우에만 사용합니다. 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);
}
}