Rechercher et gérer des espaces Google Chat pour votre organisation Google Workspace

Ce guide explique comment un administrateur Google Workspace peut utiliser la méthode search() sur une ressource Space de l'API Google Chat pour gérer les espaces nommés dans son organisation et effectuer des tâches administratives.

En tant qu'administrateur Google Workspace, vous ne pouvez utiliser l'API Chat que pour gérer les espaces nommés, qui sont définis comme un SpaceType de SPACE. Les espaces nommés sont des lieux permanents où les utilisateurs peuvent envoyer des messages, partager des fichiers et collaborer. Vous ne pouvez pas utiliser l'API Chat pour gérer les messages privés ni les discussions de groupe.

La ressource Space représente un espace où les utilisateurs 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 discussions de groupe sont des conversations entre trois utilisateurs ou plus et des applications de chat.
  • Les espaces nommés sont des lieux permanents où les utilisateurs peuvent envoyer des messages, partager des fichiers et collaborer.

En tant qu'administrateur Google Workspace, vous pouvez utiliser l'API Chat pour rechercher et gérer les espaces nommés de votre organisation de différentes manières :

  • Auditer les espaces de l'organisation La méthode search() vous permet de récupérer la liste de tous les espaces d'une organisation, avec des informations détaillées sur les paramètres et les métadonnées de chaque espace, comme la date de création, la date de la dernière activité, le nombre de membres, l'état du paramètre d'historique et la possibilité d'inviter des invités externes.
  • Recherchez et supprimez les espaces inactifs. À l'aide de la méthode search(), vous pouvez rechercher des espaces n'ayant pas été utilisés depuis une certaine date et heure, puis les supprimer. Pour en savoir plus et obtenir des exemples de code, consultez Rechercher et supprimer les espaces inactifs.
  • Exportez une liste d'espaces en fonction de critères de recherche. La méthode search() vous permet de récupérer la liste des espaces qui répondent aux critères spécifiés dans query et d'exporter les résultats dans un fichier CSV pour analyse.
  • Recherchez et contactez les gestionnaires d'espaces. La méthode search() vous permet de récupérer la liste de tous les espaces d'une organisation. Vous pouvez ensuite utiliser la méthode members.list() pour récupérer la liste de tous les membres d'un espace qui sont administrateurs.
  • Recherchez les espaces sans gestionnaire désigné. La méthode search() vous permet de récupérer la liste de tous les espaces d'une organisation. Vous pouvez ensuite utiliser la méthode members.list() pour récupérer la liste des espaces sans administrateur.

Prérequis

Python

Appeler l'API Google Chat en tant qu'administrateur

Pour vous authentifier en tant qu'utilisateur disposant de droits d'administrateur, vous devez transmettre les éléments suivants dans votre requête :

  • Spécifiez un champ d'application de l'autorisation qui permet d'utiliser l'authentification de l'utilisateur avec des droits d'administrateur.
  • Définissez le champ useAdminAccess sur true.

Cette section présente les exemples suivants d'appels de l'API Chat en tant qu'administrateur :

Rechercher des espaces dans votre organisation

Cet exemple explique comment les administrateurs Google Workspace peuvent utiliser la méthode search() sur la ressource Space de l'API Chat pour rechercher des espaces dans une organisation en fonction de critères spécifiques.

Pour appeler la méthode search() avec l'authentification de l'utilisateur et les droits d'administrateur, vous devez spécifier les éléments suivants dans la requête :

  • Spécifiez le champ d'application de l'autorisation chat.admin.spaces ou chat.admin.spaces.readonly.
  • Spécifiez useAdminAccess=true.
  • Spécifiez les paramètres de recherche query pour filtrer les résultats :
    • customer = "customers/my_customer" : obligatoire, la seule valeur acceptée est customers/my_customer
    • spaceType = "SPACE" : obligatoire, la seule valeur acceptée est SPACE
    • Vous pouvez également ajouter une ou plusieurs requêtes pour filtrer davantage votre recherche d'espaces, par exemple des mots clés dans les noms à afficher (displayName), la date de création (createTime) ou en fonction de l'activité dans l'espace (lastActiveTime).

Le code suivant montre comment utiliser les droits d'administrateur pour rechercher des espaces dont le nom à afficher contient "Hello" et "World", dans n'importe quelle combinaison :

Python

  1. Dans votre répertoire de travail, créez un fichier nommé search_spaces_for_hello_world.py.
  2. Incluez le code suivant dans search_spaces_for_hello_world.py :

    from google_auth_oauthlib.flow import InstalledAppFlow
    from googleapiclient.discovery import build
    
    SCOPES = [
      'https://www.googleapis.com/auth/chat.admin.spaces.readonly',
    ]
    
    def main():
    # Authenticate with Google Workspace
    # and get user authorization.
    flow = InstalledAppFlow.from_client_secrets_file(
        'credentials.json',
        SCOPES,
    )
    creds = flow.run_local_server()
    
    # Build a service endpoint for Chat API.
    chat = build('chat', 'v1', credentials=creds)
    
    spaces = []
    page_token = ''
    
    # Search for all spaces.
    while True:
      result = (
          chat.spaces()
          .search(
              useAdminAccess=True,
              query=(
                'customer = "customers/my_customer"'
                'AND spaceType = "SPACE"'
                'AND displayName:"Hello World"'
                )
    pageToken=page_token,
          )
          .execute()
      )
      if 'spaces' not in result:
        print('No spaces found named Hello World.')
        return
      spaces.extend(result['spaces'])
      if 'nextPageToken' in result:
        page_token = result['nextPageToken']
      else:
        break
    
    print(str(len(spaces)) + ' spaces found:')
    # Prints the list of spaces.
    print(spaces)
    
  3. Dans votre répertoire de travail, compilez et exécutez l'exemple :

    python3 search_spaces_for_hello_world.py

Rechercher et supprimer les espaces inactifs

Cet exemple explique comment les administrateurs Google Workspace peuvent utiliser la méthode search() sur la ressource Space de l'API Chat pour trouver les espaces inactifs, puis les supprimer à l'aide de la méthode delete() avec le paramètre useAdminAccess.

Les espaces Google Chat inactifs (ceux qui ne sont plus utilisés activement) peuvent occuper un espace de stockage précieux et encombrer l'interface utilisateur. À l'aide de la méthode search(), les administrateurs peuvent trouver les espaces qui n'ont pas été utilisés depuis une date et une heure spécifiques, par exemple depuis deux mois. Une fois la liste des espaces énumérée, les administrateurs peuvent effectuer des actions sur ceux-ci, comme les mettre à jour ou les supprimer.

Pour rechercher une liste d'espaces inactifs, puis les supprimer avec l'authentification de l'utilisateur et les droits d'administrateur, transmettez les éléments suivants dans vos requêtes :

  • Pour rechercher des espaces inactifs, spécifiez les éléments suivants :
    • Spécifiez le champ d'application de l'autorisation chat.admin.spaces ou chat.admin.spaces.readonly.
    • Appelez la méthode search() sur la ressource Spaces.
    • Définissez INACTIVE_SPACE_DEADLINE sur la date et l'heure de la dernière activité qui détermine les espaces à renvoyer.
    • Spécifiez useAdminAccess=true.
    • Spécifiez les paramètres de recherche query pour filtrer les résultats :
      • customer = "customers/my_customer" : obligatoire, la seule valeur acceptée est customers/my_customer
      • spaceType = "SPACE" : obligatoire, la seule valeur acceptée est SPACE
      • lastActiveTime : pour filtrer votre requête afin de ne renvoyer que les espaces inactifs, spécifiez lastActiveTime.
  • Pour supprimer les espaces inactifs des résultats de recherche, spécifiez les éléments suivants :
    • Spécifiez le champ d'application de l'autorisation chat.admin.delete.
    • Appelez la méthode delete() sur la ressource Spaces.
    • Spécifiez useAdminAccess=true.

Le code suivant montre comment rechercher des espaces inactifs et les supprimer à l'aide des droits d'administrateur :

Python

  1. Dans votre répertoire de travail, créez un fichier nommé find_and_delete_inactive_spaces.py.

  2. Incluez le code suivant dans find_and_delete_inactive_spaces.py :

    
    from google_auth_oauthlib.flow import InstalledAppFlow
    from googleapiclient.discovery import build
    
    SCOPES = [
        'https://www.googleapis.com/auth/chat.admin.spaces.readonly',
        'https://www.googleapis.com/auth/chat.admin.delete',
    ]
    
    # Any spaces that have not been active since this time will be deleted.
    INACTIVE_SPACE_DEADLINE = '"INACTIVE_DATE"'
    
    def main():
      # Authenticate with Google Workspace
      # and get user authorization.
      flow = InstalledAppFlow.from_client_secrets_file(
          'credentials.json',
          SCOPES,
      )
      creds = flow.run_local_server()
    
      # Build a service endpoint for Chat API.
      chat = build('chat', 'v1', credentials=creds)
    
      spaces = []
      page_token = ''
    
      # Search for all inactive spaces.
      while True:
        result = (
            chat.spaces()
            .search(
                useAdminAccess=True,
                query=(
                    'customer = "customers/my_customer" AND spaceType = "SPACE" AND'
                    ' lastActiveTime < '
                )
                + INACTIVE_SPACE_DEADLINE,
                pageToken=page_token,
            )
            .execute()
        )
        if 'spaces' not in result:
          print('No inactive spaces found.')
          return
        spaces.extend(result['spaces'])
        if 'nextPageToken' in result:
          page_token = result['nextPageToken']
        else:
          break
    
      print(str(len(spaces)) + ' inactive spaces found:')
      # Prints the list of inactive spaces.
      print(spaces)
    
      # Delete all inactive spaces.
      for space in spaces:
        (
            chat.spaces()
            .delete(
                useAdminAccess=True,
                name=space['name'],
            )
            .execute()
        )
        print(
            'Deleted space: '
            + space['displayName']
            + ', Resource Name: '
            + space['name']
        )
    
    if __name__ == '__main__':
      main()
    
  3. Dans le code, remplacez INACTIVE_DATE par une date et une heure au format AAAA-MM-JJTHH:MM:SS+HH:MM. Par exemple, "2024-06-01T00:00:00+00:00".

  4. Dans votre répertoire de travail, compilez et exécutez l'exemple :

    python3 find_and_delete_inactive_spaces.py