acceder a la API de CIG en Apps Script.
El servicio avanzado de Cloud Identity Groups (CIG) te permite usar la API de CIG en Google Apps Script.
Este es un servicio avanzado que se debe habilitar antes de usarlo.
Referencia
Para obtener información detallada sobre este servicio, consulta la documentación de referencia para la API de CIG. Al igual que todos los servicios avanzados en 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 los 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 del grupo debe incluir un groupKey, un parent y una label configurados 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: Convierte en propietario del grupo a la persona que envía la solicitud.
EMPTY: Crea un grupo sin propietarios iniciales. Solo puedes usar este valor si eres administrador avanzado de Google Workspace o administrador de Grupos de Google. Para obtener más información sobre las funciones de Google Workspace, consulta Roles de administrador precompilados.
En el siguiente ejemplo, se muestra cómo crear un grupo de modo que el usuario sea el propietario del 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: "WITH_INITIAL_OWNER" };
try {
const response = groups.create(group, optionalArgs);
console.log(response);
} catch (error) {
console.error(error);
}
}
Buscar un grupo
Para buscar un Grupo de Google, llama a
groups.search
con una cadena de consulta. Para buscar todos los grupos, proporciona la 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));
}
Agregar una membresía a un grupo
Una vez que exista un grupo, puedes crearle membresías. Este método requiere un recurso
membershipy la cadena name del recurso superior. El valor anterior se puede obtener
buscando el grupo a través del lookup
método.
El siguiente método auxiliar muestra un ejemplo de cómo agregar una membresía a un grupo.
expiryDetail es un campo opcional que se puede agregar para establecer una fecha de 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);
}
}
Obtener membresías de un miembro
Usa el groups.memberships.searchDirectGroups
método para buscar los superiores inmediatos de un miembro.
El siguiente método auxiliar muestra un ejemplo de cómo iterar 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);
}
}
Obtener membresías de un grupo
Usa el groups.memberships.list
método para enumerar los miembros de un grupo.
groupId: Es el ID numérico del grupo para el que deseas enumerar los miembros. Para
encontrar el ID de un solo grupo, usa el groups.lookup
método. Para ver todos los IDs de grupo en un cliente o espacio de nombres, usa el groups.list
método.
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);
}
}