Rechercher des espaces

Ce guide explique comment utiliser la search() méthode sur la Space ressource de l' API Google Chat pour rechercher des espaces nommés dans une organisation Google Workspace.

La Spaceressource représente un emplacement où les personnes et les applications Chat peuvent envoyer des messages, partager des fichiers et collaborer. Il existe plusieurs types d'espaces :

  • Les messages privés (MP) sont des conversations entre deux utilisateurs ou entre un utilisateur et une application Chat.
  • Les chats de groupe sont des conversations entre trois utilisateurs ou plus et des applications Chat.
  • Les espaces nommés sont des emplacements persistants où les utilisateurs envoient des messages, partagent des fichiers et collaborent.

Si vous êtes un administrateur Google Workspace et que vous souhaitez effectuer une recherche dans tous les espaces de votre organisation, y compris les espaces privés auxquels vous n'avez pas adhéré, consultez Rechercher et gérer des espaces en tant qu'administrateur Google Workspace pour appeler l'API avec des droits d'administrateur (useAdminAccess=true).

Lorsque vous recherchez des espaces avec l'authentification de l'utilisateur sans droits d'administrateur, la méthode recherche les espaces nommés (spaceType de SPACE) auxquels l'utilisateur authentifié a accès, tels que les espaces dont il est membre, au sein de son organisation.

Prérequis

Node.js

Python

Java

Apps Script

Rechercher des espaces avec l'authentification de l'utilisateur

Pour rechercher des espaces dans Google Chat sans droits d'administrateur, transmettez les éléments suivants dans votre requête :

  • Avec l'authentification de l'utilisateur, spécifiez le champ d'application d'autorisation chat.spaces.readonly ou chat.spaces.
  • Appelez la search() méthode sur la Space ressource.
  • Définissez useAdminAccess sur false (ou omettez le paramètre).
  • Spécifiez les paramètres de query recherche pour filtrer les résultats:
    • spaceType = "SPACE" : obligatoire lorsque query est spécifié et que la seule valeur acceptée est SPACE.
    • displayName : filtrez par nom à afficher de l'espace à l'aide de l'opérateur HAS (:). Exemple : displayName:"Project". Le texte à faire correspondre est tokenisé, et chaque jeton est mis en correspondance de préfixe sans tenir compte de la casse et indépendamment en tant que sous-chaîne n'importe où dans le displayName de l'espace. Remarque : Lorsque useAdminAccess est défini sur false, displayName est obligatoire dans votre requête pour récupérer des résultats pertinents. Sinon, la méthode renvoie une réponse vide.
    • externalUserAllowed : filtrez éventuellement si les invités externes sont autorisés dans l'espace (true ou false).
  • Vous pouvez également spécifier pageSize pour limiter le nombre maximal d'espaces à renvoyer (jusqu'à 1000) ou pageToken pour récupérer les pages de résultats suivantes.
  • Vous pouvez également spécifier orderBy pour trier les résultats de recherche (createTime desc ou relevance desc). Remarque : relevance desc est disponible dans le cadre du programme Preview développeur Google Workspace.

Dans les différents champs de la requête, seuls les opérateurs AND sont acceptés. Exemple : spaceType = "SPACE" AND displayName:"Hello" AND externalUserAllowed = "true". Dans displayName et externalUserAllowed, les opérateurs OR sont acceptés si vous souhaitez faire correspondre plusieurs critères.

L'exemple suivant recherche les espaces nommés dont le nom à afficher contient "Project" :

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);
  }
}

L'API Chat renvoie une liste paginée d'espaces qui correspondent à la requête et auxquels l'utilisateur appelant a accès.