En esta guía, se explica cómo usar el
search() método en el
Space recurso de la
API de Google Chat para buscar espacios con nombre en una organización de Google Workspace.
El recurso
Space representa un lugar donde las personas y las apps de Chat pueden enviar mensajes,
compartir archivos y colaborar. Existen varios tipos de espacios:
- Los mensajes directos (MD) son conversaciones entre dos usuarios o entre un usuario y una app de Chat.
- Los chats en grupo son conversaciones entre tres o más usuarios y apps de Chat.
- Los espacios con nombre son lugares persistentes donde las personas envían mensajes, comparten archivos y colaboran.
Si eres administrador de Google Workspace y quieres buscar en todos los espacios de tu organización, incluidos los espacios privados a los que no te uniste, consulta Cómo buscar y administrar espacios como administrador de Google Workspace para llamar a la API con privilegios de administrador (useAdminAccess=true).
Cuando se buscan espacios con autenticación de usuario sin privilegios de administrador, el método busca espacios con nombre (spaceType de SPACE) a los que el usuario autenticado tiene acceso, como los espacios de los que es miembro, dentro de su organización.
Requisitos previos
Node.js
- Una cuenta de Google Workspace Business o Enterprise con acceso a Google Chat.
- Configura tu entorno:
- Crea un proyecto de Google Cloud.
- Configura la pantalla de consentimiento de OAuth.
- Habilita y configura la API de Google Chat con un nombre, ícono y descripción para tu app de Chat.
- Instala la biblioteca cliente de Cloud para Node.js.
-
Crea credenciales de ID de cliente de OAuth para una aplicación de escritorio. Para ejecutar la muestra de esta
guía, guarda las credenciales como un archivo JSON llamado
credentials.jsonen tu directorio local.
- Elige un alcance de autorización que admita la autenticación de usuarios.
Python
- Una cuenta de Google Workspace Business o Enterprise con acceso a Google Chat.
- Configura tu entorno:
- Crea un proyecto de Google Cloud.
- Configura la pantalla de consentimiento de OAuth.
- Habilita y configura la API de Google Chat con un nombre, ícono y descripción para tu app de Chat.
- Instala labiblioteca cliente de Cloud para Python .
-
Crea credenciales de ID de cliente de OAuth para una aplicación de escritorio. Para ejecutar la muestra de esta
guía, guarda las credenciales como un archivo JSON llamado
credentials.jsonen tu directorio local.
- Elige un alcance de autorización que admita la autenticación de usuarios.
Java
- Una cuenta de Google Workspace Business o Enterprise con acceso a Google Chat.
- Configura tu entorno:
- Crea un proyecto de Google Cloud.
- Configura la pantalla de consentimiento de OAuth.
- Habilita y configura la API de Google Chat con un nombre, ícono y descripción para tu app de Chat.
- Instala la biblioteca cliente de Cloud para Java.
-
Crea credenciales de ID de cliente de OAuth para una aplicación de escritorio. Para ejecutar la muestra de esta
guía, guarda las credenciales como un archivo JSON llamado
credentials.jsonen tu directorio local.
- Elige un alcance de autorización que admita la autenticación de usuarios.
Apps Script
- Una cuenta de Google Workspace Business o Enterprise con acceso a Google Chat.
- Configura tu entorno:
- Crea un proyecto de Google Cloud.
- Configura la pantalla de consentimiento de OAuth.
- Habilita y configura la API de Google Chat con un nombre, ícono y descripción para tu app de Chat.
- Crea un proyecto independiente de Apps Script, y activa el servicio avanzado de Chat.
- Elige un alcance de autorización que admita la autenticación de usuarios.
Busca espacios con autenticación de usuario
Para buscar espacios en Google Chat sin privilegios de administrador, pasa lo siguiente en tu solicitud:
- Con autenticación de usuario, especifica el alcance de autorización
chat.spaces.readonlyochat.spaces. - Llama al
search()método en elSpacerecurso. - Establece
useAdminAccessenfalse(o omite el parámetro). - Especifica los parámetros de búsqueda
querypara filtrar los resultados:spaceType = "SPACE": Es obligatorio cuando se especificaqueryy el único valor admitido esSPACE.displayName: Filtra por nombre visible del espacio con el operadorHAS(:) . Por ejemplo,displayName:"Project". El texto que se debe hacer coincidir se tokeniza y cada token se hace coincidir con el prefijo sin distinción entre mayúsculas y minúsculas y de forma independiente como una substring en cualquier lugar deldisplayNamedel espacio. Nota: CuandouseAdminAccessesfalse,displayNamees obligatorio en tu consulta para recuperar resultados significativos; de lo contrario, el método muestra una respuesta vacía.externalUserAllowed: Filtra de forma opcional si se permiten invitados externos en el espacio (trueofalse).
- De manera opcional, especifica
pageSizepara limitar la cantidad máxima de espacios que se mostrarán (hasta1000) opageTokenpara recuperar las páginas posteriores de los resultados. - De manera opcional, especifica
orderBypara ordenar los resultados de la búsqueda (createTime descorelevance desc). Nota:relevance descestá disponible a través del Programa de versión preliminar para desarrolladores de Google Workspace.
En los diferentes campos de la consulta, solo se admiten operadores AND. Por ejemplo: spaceType = "SPACE" AND displayName:"Hello" AND externalUserAllowed = "true". Dentro de displayName y externalUserAllowed, se admiten operadores OR si deseas hacer coincidir varios criterios.
En el siguiente ejemplo, se buscan espacios con nombre que contengan "Project" en su nombre visible:
Node.js
/**
* This sample shows how to search for spaces without administrator privileges.
*
* It relies on the @google-apps/chat npm package.
*/
// Read the documentation for more details:
// https://developers.google.com/workspace/chat/api/reference/rest/v1/spaces/search
const {ChatServiceClient} = require('@google-apps/chat');
const {auth} = require('google-auth-library');
async function main() {
// Create a client
const chatClient = new ChatServiceClient({
authClient: await auth.getClient({
scopes: ['https://www.googleapis.com/auth/chat.spaces.readonly']
})
});
// Initialize request arguments.
// When useAdminAccess is false, spaceType and displayName are required in query.
const request = {
query: 'spaceType = "SPACE" AND displayName:"Project"',
useAdminAccess: false
};
// Call the API and iterate over the paginated response
const iterable = chatClient.searchSpacesAsync(request);
for await (const result of iterable) {
console.log('Found space:', result.space.displayName, result.space.name);
}
}
main().catch(console.error);
Python
"""
This sample shows how to search for spaces without administrator privileges.
"""
from google.apps import chat_v1
import google.auth
# Read the documentation for more details:
# https://developers.google.com/workspace/chat/api/reference/rest/v1/spaces/search
def search_spaces():
# Create a client
scopes = ["https://www.googleapis.com/auth/chat.spaces.readonly"]
credentials, _ = google.auth.default(scopes=scopes)
client = chat_v1.ChatServiceClient(credentials=credentials)
# Initialize request arguments.
# When use_admin_access is False, space_type and display_name are required in query.
request = chat_v1.SearchSpacesRequest(
query='spaceType = "SPACE" AND displayName:"Project"',
use_admin_access=False
)
# Make the request and iterate over the paginated results.
page_result = client.search_spaces(request)
for result in page_result.results:
print(f"Found space: {result.space.display_name} ({result.space.name})")
if __name__ == "__main__":
search_spaces()
Java
/**
* This sample shows how to search for spaces without administrator privileges.
*/
import com.google.chat.v1.ChatServiceClient;
import com.google.chat.v1.ChatServiceClient.SearchSpacesPagedResponse;
import com.google.chat.v1.SearchSpacesRequest;
import com.google.chat.v1.SearchSpaceResult;
// Read the documentation for more details:
// https://developers.google.com/workspace/chat/api/reference/rest/v1/spaces/search
public class SearchSpaces {
public static void main(String[] args) throws Exception {
// See https://github.com/googleworkspace/java-samples/blob/main/chat/client-libraries/cloud/src/main/java/com/google/workspace/api/chat/samples/AuthenticationUtils.java
// for an example of how to authenticate the request.
try (ChatServiceClient chatServiceClient = AuthenticationUtils.createClientWithUserCredentials(
ImmutableList.of("https://www.googleapis.com/auth/chat.spaces.readonly"))) {
SearchSpacesRequest request = SearchSpacesRequest.newBuilder()
.setQuery("spaceType = \"SPACE\" AND displayName:\"Project\"")
.setUseAdminAccess(false)
.build();
SearchSpacesPagedResponse response = chatServiceClient.searchSpaces(request);
for (SearchSpaceResult result : response.iterateAll()) {
System.out.printf("Found space: %s (%s)\n", result.space.getDisplayName(), result.space.getName());
}
}
}
}
Apps Script
/**
* This sample shows how to search for spaces without administrator privileges.
*/
// Read the documentation for more details:
// https://developers.google.com/workspace/chat/api/reference/rest/v1/spaces/search
function searchSpaces() {
try {
// Call the API
// When useAdminAccess is false, spaceType and displayName are required in query.
const response = Chat.Spaces.search({
query: 'spaceType = "SPACE" AND displayName:"Project"',
useAdminAccess: false
});
if (response.results && response.results.length > 0) {
response.results.forEach(result => {
console.log('Found space: %s (%s)', result.space.displayName, result.space.name);
});
} else {
console.log('No matching spaces found.');
}
} catch (err) {
console.log('Failed to search spaces: ' + err.message);
}
}
La API de Chat muestra una lista paginada de espacios que coinciden con la consulta y a los que puede acceder el usuario que realiza la llamada.
Temas relacionados
- Cómo crear un espacio
- Cómo configurar un espacio
- Cómo obtener detalles sobre un espacio
- Crea listas de espacios
- Actualiza un espacio
- Borra un espacio
- Cómo buscar y administrar espacios como administrador de Google Workspace