El servicio avanzado de Grupos de Cloud Identity (CIG) te permite usar la API de CIG en Apps Script.
Referencia
Para obtener información detallada sobre este servicio, consulta la documentación de referencia de la API de CIG. Al igual que todos los servicios avanzados de Apps Script, el servicio avanzado de CIG usa los mismos objetos, métodos y parámetros que la API pública. Para obtener más información, consulta Cómo se determinan las firmas de métodos.
Código de muestra
Las siguientes funciones auxiliares usan la versión v1 de la API.
Crear un grupo
Para crear un Grupo de Google, llama a groups.create
con una instancia del nuevo recurso de grupo. La instancia de grupo debe incluir una groupKey
, un parent
y un label
establecidos en cloudidentity.googleapis.com/groups.discussion_forum
. También debes configurar el parámetro initialGroupConfig
, que define el propietario inicial del grupo. Puedes usar los siguientes valores para este parámetro:
WITH_INITIAL_OWNER
: Hace que la persona que envía la solicitud sea el propietario del grupo.
EMPTY
: Crea un grupo sin propietarios iniciales. Solo puedes usar este valor si eres administrador avanzado de Google Workspace o administrador de grupos. Para obtener más información sobre los roles de Google Workspace, consulta los roles de administrador precompilados.
En el siguiente ejemplo, se muestra una función auxiliar para crear un grupo:
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: "EMPTY" };
try {
const response = groups.create(group, optionalArgs);
console.log(response);
} catch (error) {
console.error(error);
}
}
Cómo buscar un grupo
Para buscar un Grupo de Google, llama a groups.search
con una cadena de consulta. Para buscar todos los grupos, proporciona el 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));
}
Agrega una membresía a un grupo
Una vez que exista un grupo, puedes crearle membresías. Este método requiere un recurso membership
y la cadena name
del recurso superior. Para obtener el primer valor, busca el grupo con el método lookup
.
En el siguiente método auxiliar, se muestra un ejemplo de cómo agregar una membresía a un grupo. expiryDetail
es un campo opcional que se puede agregar para establecer un vencimiento para la membresía. El valor de preferredMemberKey
es la dirección de correo electrónico del miembro.
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);
}
}
Cómo obtener membresías de un miembro
Usa el método groups.memberships.searchDirectGroups
para buscar los elementos superiores inmediatos de un miembro.
En el siguiente método auxiliar, se muestra un ejemplo de iteración a través de las membresías directas de un miembro determinado.
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);
}
}
Cómo obtener membresías de un grupo
Usa el método groups.memberships.list
para enumerar los miembros de un grupo.
groupId
: Es el ID numérico del grupo para el que deseas enumerar a los miembros. Para encontrar el ID de un solo grupo, usa el método groups.lookup
. Para ver todos los IDs de grupo de un cliente o espacio de nombres, usa el método 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);
}
}