Zaawansowana usługa Cloud Identity Groups (CIG) umożliwia korzystanie z interfejsu CIG API w Apps Script.
Dokumentacja
Szczegółowe informacje o tej usłudze znajdziesz w dokumentacji referencyjnej interfejsu CIG API. Podobnie jak wszystkie usługi zaawansowane w Apps Script, zaawansowana usługa 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ę Google, wywołaj metodę
groups.create
z instancją nowego zasobu grupy. Instancja grupy musi zawierać elementy 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: sprawia, że osoba wysyłająca prośbę staje się właścicielem grupy.
EMPTY: tworzy grupę bez początkowych właścicieli. Możesz użyć tej wartości tylko wtedy, gdy jesteś superadministratorem Google Workspace lub administratorem grup. Więcej informacji o rolach w Google Workspace znajdziesz w artykule Gotowe role administratora.
Ten 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);
}
}
Wyszukiwanie grupy
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));
}
Dodawanie członkostwa do grupy
Po utworzeniu grupy możesz utworzyć dla niej członkostwo. Ta metoda wymaga membershipzasobu i ciągu znaków zasobu nadrzędnego name. Poprzednią wartość można uzyskać, wyszukując grupę za pomocą metody lookup.
Poniższa metoda pomocnicza pokazuje przykład dodawania członkostwa do grupy.
expiryDetail to pole opcjonalne, które można dodać, aby ustawić datę wygaśnięcia członkostwa. Wartością preferredMemberKey jest 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);
}
}
Otrzymywanie wspierania od wspierającego
Użyj metody groups.memberships.searchDirectGroups, aby wyszukać bezpośrednich rodziców członka.
Poniższa metoda pomocnicza pokazuje przykład iteracji po bezpośrednich członkostwach danego użytkownika.
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);
}
}
Pobieranie członkostwa w grupie
Aby wyświetlić listę członków grupy, użyj metody groups.memberships.list.
groupId: liczbowy identyfikator grupy, której członków chcesz wyświetlić. Aby znaleźć identyfikator pojedynczej grupy, użyj metody groups.lookup. Aby wyświetlić wszystkie identyfikatory grup w przypadku klienta lub przestrzeni nazw, użyj metody 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);
}
}