Répertorier les abonnements Google Workspace

Cette page explique comment lister les abonnements Google Workspace à l'aide de la méthode subscriptions.list().

Lorsque vous appelez cette méthode avec l'authentification de l'utilisateur, elle renvoie une liste d'abonnements autorisés par l'utilisateur. Lorsque vous utilisez l'authentification de l'application, la méthode peut renvoyer une liste contenant tous les abonnements de l'application.

Prérequis

Apps Script

  • Un projet Apps Script:
    • Utilisez votre projet Google Cloud au lieu de celui créé automatiquement par Apps Script.
    • Pour tous les champs d'application que vous avez ajoutés pour configurer l'écran de consentement OAuth, vous devez également les ajouter au fichier appsscript.json de votre projet Apps Script. Exemple :
    • "oauthScopes": [
        "https://www.googleapis.com/auth/chat.messages.readonly"
      ]
          
    • Activez le service avancé Google Workspace Events.

Python

  • Python 3.6 ou version ultérieure
  • Outil de gestion des paquets pip
  • Dernières bibliothèques clientes Google pour Python. Pour les installer ou les mettre à jour, exécutez la commande suivante dans votre interface de ligne de commande:
      pip3 install --upgrade google-api-python-client google-auth-oauthlib
      
  • Un abonnement Google Workspace Pour en créer un, consultez la section Créer un abonnement.

  • Authentification requise:

    • Pour l'authentification des utilisateurs, une portée compatible avec au moins l'un des types d'événements de l'abonnement est requise. Pour identifier une portée, consultez Portées par type d'événement.
    • Pour l'authentification des applications, l'étendue chat.bot est requise (applications Google Chat uniquement).

Lister les abonnements autorisés par un utilisateur

Pour afficher la liste des abonnements, vous devez filtrer par au moins un type d'événement. Vous pouvez également filtrer votre requête par une ou plusieurs ressources cibles. Pour en savoir plus sur les filtres de requête compatibles, consultez la documentation de la méthode list().

L'exemple de code suivant renvoie un tableau d'objets Subscription filtrés par type d'événement et ressource cible. Lorsqu'elle est authentifiée en tant qu'utilisateur, la méthode ne renvoie qu'une liste d'abonnements que l'utilisateur a autorisé l'application à créer.

Pour lister les abonnements pour un type d'événement et une ressource cible spécifiés:

Apps Script

  1. Dans votre projet Apps Script, créez un fichier de script nommé listSubscriptions et ajoutez le code suivant:

    function listSubscriptions() {
      // Filter for event type (required).
      const eventType = 'EVENT_TYPE';
    
      // Filter for target resource (optional).
      const targetResource = 'TARGET_RESOURCE';
    
      const filter = `event_types:"${eventType}" AND target_resource="${targetResource}"`
    
      // Call the Workspace Events API using the advanced service.
      const response = WorkspaceEvents.Subscriptions.list({ filter });
      console.log(response);
    }
    

    Remplacez les éléments suivants :

    • EVENT_TYPE: type d'événement au format de la spécification CloudEvents. Par exemple, pour filtrer les abonnements qui reçoivent des événements sur de nouveaux membres d'un espace Google Chat, google.workspace.chat.message.v1.created.
    • TARGET_RESOURCE: ressource cible, au format de son nom de ressource complet. Par exemple, pour filtrer par abonnements pour un espace Google Chat, utilisez //chat.googleapis.com/spaces/SPACE_ID, où spaces/SPACE_ID représente le champ name pour la ressource Space.
  2. Pour lister les abonnements, exécutez la fonction listSubscriptions dans votre projet Apps Script.

Python

  1. Dans votre répertoire de travail, créez un fichier nommé list_subscriptions.py et ajoutez le code suivant:

    """List subscriptions."""
    
    from google_auth_oauthlib.flow import InstalledAppFlow
    from googleapiclient.discovery import build
    
    # Specify required scopes.
    SCOPES = ['SCOPE']
    
    # Authenticate with Google Workspace and get user authentication.
    flow = InstalledAppFlow.from_client_secrets_file('client_secrets.json', SCOPES)
    CREDENTIALS = flow.run_local_server()
    
    # Call the Workspace Events API using the service endpoint.
    service = build(
        'workspaceevents',
        'v1',
        credentials=CREDENTIALS,
    )
    
    # Filter for event type (required).
    EVENT_TYPE = 'EVENT_TYPE'
    
    # Filter for target resource (optional).
    TARGET_RESOURCE = 'TARGET_RESOURCE'
    
    FILTER = f'event_types:"{EVENT_TYPE}" AND target_resource="{TARGET_RESOURCE}"'
    response = service.subscriptions().list(filter=FILTER).execute()
    print(response)
    

    Remplacez les éléments suivants :

    • SCOPE: champ d'application OAuth compatible avec au moins un type d'événement de l'abonnement. Par exemple, si votre abonnement reçoit des événements d'un espace Chat mis à jour, https://www.googleapis.com/auth/chat.spaces.readonly.
    • EVENT_TYPE: type d'événement au format de la spécification CloudEvents. Par exemple, pour filtrer les abonnements qui reçoivent des événements sur de nouveaux membres d'un espace Google Chat, google.workspace.chat.message.v1.created.
    • TARGET_RESOURCE: ressource cible, au format de son nom de ressource complet. Par exemple, pour filtrer par abonnements pour un espace Google Chat, utilisez //chat.googleapis.com/spaces/SPACE_ID, où spaces/SPACE_ID représente le champ name pour la ressource Space.
  2. Dans votre répertoire de travail, assurez-vous d'avoir stocké vos identifiants d'ID client OAuth et d'avoir nommé le fichier client_secrets.json. L'exemple de code utilise ce fichier JSON pour s'authentifier auprès de Google Workspace et obtenir les identifiants utilisateur. Pour obtenir des instructions, consultez Créer des identifiants ID client OAuth.

  3. Pour lister les abonnements, exécutez la commande suivante dans votre terminal:

    python3 list_subscriptions.py

L'API Google Workspace Events renvoie un tableau paginé d'objets Subscription correspondant au filtre de votre requête.