Usługa zaawansowanych grup Cloud Identity (CIG) umożliwia korzystanie z interfejsu CIG API w Google Apps Script.
Jest to usługa zaawansowana, którą należy włączyć przed użyciem.
Dokumentacja
Szczegółowe informacje o tej usłudze znajdziesz w dokumentacji interfejsu CIG API. Podobnie jak wszystkie usługi zaawansowane w Apps Script, usługa zaawansowana CIG korzysta z tych samych obiektów, metod i parametrów co publiczny interfejs API. Więcej informacji znajdziesz w artykule Jak określa się sygnatury metod.
Przykładowy kod
Te funkcje pomocnicze korzystają z wersji 1 interfejsu API.
Utwórz grupę
Aby utworzyć Grupę dyskusyjną Google, wywołaj
groups.create
z instancją nowego zasobu grupy. Instancja grupy musi zawierać groupKey, parent i label ustawione na cloudidentity.googleapis.com/groups.discussion_forum.
Musisz też ustawić parametr initialGroupConfig, który określa początkowego właściciela grupy. W przypadku tego parametru możesz użyć tych wartości:
WITH_INITIAL_OWNER: osoba wysyłająca prośbę staje się właścicielem grupy.
EMPTY: tworzy grupę bez początkowych właścicieli. Tej wartości możesz użyć tylko wtedy, gdy jesteś superadministratorem Google Workspace lub administratorem Grup dyskusyjnych Google. Więcej informacji o rolach Google Workspace znajdziesz w artykule Gotowe role administratora.
Poniższy przykład pokazuje, jak utworzyć grupę, której właścicielem jest użytkownik:
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);
}
}
Wyszukaj grupę
Aby wyszukać Grupę dyskusyjną Google, wywołaj
groups.search
z ciągiem zapytania. Aby wyszukać wszystkie grupy, podaj
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));
}
Dodaj członkostwo do grupy
Gdy grupa już istnieje, możesz utworzyć dla niej członkostwa. Ta metoda wymaga zasobu
membership
i ciągu name zasobu nadrzędnego. Tę pierwszą wartość można uzyskać, wyszukując grupę za pomocą metody
lookup.
Ta metoda pomocnicza pokazuje, jak dodać członkostwo do grupy.
expiryDetail to pole opcjonalne, które można dodać, aby ustawić datę wygaśnięcia członkostwa. Wartość preferredMemberKey to adres e-mail członka.
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);
}
}
Pobierz członkostwa od członka
Aby wyszukać bezpośrednich rodziców członka, użyj groups.memberships.searchDirectGroups
metody.
Ta metoda pomocnicza pokazuje, jak iterować po bezpośrednich członkostwach danego członka.
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);
}
}
Pobierz członkostwa z grupy
Aby wyświetlić listę członków grupy, użyj groups.memberships.list
metody.
groupId: numeryczny identyfikator grupy, której członków chcesz wyświetlić. Aby
znaleźć identyfikator pojedynczej grupy, użyj groups.lookup
metody. Aby zobaczyć wszystkie identyfikatory grup w ramach klienta lub przestrzeni nazw, użyj groups.list
metody.
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);
}
}