Enumerar suscripciones a Google Workspace

En esta página, se explica cómo enumerar las suscripciones de Google Workspace con el método subscriptions.list().

Cuando llamas a este método con la autenticación del usuario, este devuelve una lista de suscripciones autorizadas por el usuario. Cuando usas la autenticación de la app, el método puede devolver una lista que contenga cualquier suscripción de la app.

Requisitos previos

Apps Script

  • Un proyecto de Apps Script:
    • Usa tu proyecto de Google Cloud en lugar del predeterminado que crea automáticamente Apps Script.
    • Para todos los permisos que agregaste para configurar la pantalla de consentimiento de OAuth, también debes agregar los permisos al archivo appsscript.json en tu proyecto de Apps Script. Por ejemplo, si especificaste el permiso chat.messages, agrega lo siguiente:
    • "oauthScopes": [
        "https://www.googleapis.com/auth/chat.messages"
      ]
          
    • Habilita el servicio avanzado de Google Workspace Events.

Python

  • Python 3.6 o una versión posterior
  • La herramienta de administración de paquetes pip
  • Las bibliotecas cliente de Google más recientes para Python. Para instalarlos o actualizarlos, ejecuta el siguiente comando en tu interfaz de línea de comandos:
      pip3 install --upgrade google-api-python-client google-auth-oauthlib
      
  • Una suscripción a Google Workspace Para crear una, consulta Cómo crear una suscripción.

  • Requiere autenticación:

    • Para la autenticación del usuario, se requiere un alcance que admita al menos uno de los tipos de eventos de la suscripción. Para identificar un alcance, consulta Alcances por tipo de evento.
    • Para la autenticación de la app, se requiere el alcance chat.bot (solo para apps de Google Chat).

Enumera las suscripciones autorizadas por un usuario

Para enumerar las suscripciones, debes filtrar por al menos un tipo de evento. También puedes filtrar tu búsqueda por uno o más recursos objetivo. Para obtener información sobre los filtros de búsqueda admitidos, consulta la documentación del método list().

La siguiente muestra de código devuelve un array de objetos Subscription filtrados por tipo de evento y recurso de destino. Cuando se autentica como usuario, el método solo devuelve una lista de suscripciones que el usuario autorizó a la app a crear.

Para enumerar las suscripciones de un tipo de evento y un recurso de destino especificados, haz lo siguiente:

Apps Script

  1. En tu proyecto de Apps Script, crea un archivo de secuencia de comandos nuevo llamado listSubscriptions y agrega el siguiente código:

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

    Reemplaza lo siguiente:

    • EVENT_TYPE: Es un tipo de evento con el formato de la especificación de CloudEvents. Por ejemplo, para filtrar las suscripciones que reciben eventos sobre membresías nuevas en un espacio de Google Chat, google.workspace.chat.message.v1.created.
    • TARGET_RESOURCE: Es un recurso de destino, con el formato de su nombre completo del recurso. Por ejemplo, para filtrar por suscripciones de un espacio de Google Chat, usa //chat.googleapis.com/spaces/SPACE_ID, donde spaces/SPACE_ID representa el campo name del recurso Space.
  2. Para enumerar las suscripciones, ejecuta la función listSubscriptions en tu proyecto de Apps Script.

Python

  1. En tu directorio de trabajo, crea un archivo llamado list_subscriptions.py y agrega el siguiente código:

    """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('credentials.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)
    

    Reemplaza lo siguiente:

    • SCOPE: Es un permiso de OAuth que admite al menos un tipo de evento de la suscripción. Por ejemplo, si tu suscripción recibe eventos de un espacio de Chat actualizado, https://www.googleapis.com/auth/chat.spaces.readonly.
    • EVENT_TYPE: Es un tipo de evento con el formato de la especificación de CloudEvents. Por ejemplo, para filtrar las suscripciones que reciben eventos sobre membresías nuevas en un espacio de Google Chat, google.workspace.chat.message.v1.created.
    • TARGET_RESOURCE: Es un recurso de destino, con el formato de su nombre completo del recurso. Por ejemplo, para filtrar por suscripciones de un espacio de Google Chat, usa //chat.googleapis.com/spaces/SPACE_ID, donde spaces/SPACE_ID representa el campo name del recurso Space.
  2. En tu directorio de trabajo, asegúrate de haber almacenado tus credenciales de ID de cliente de OAuth y de haber nombrado el archivo credentials.json. La muestra de código usa este archivo JSON para autenticarse en Google Workspace y obtener credenciales de usuario. Para obtener instrucciones, consulta Crea credenciales de ID de cliente de OAuth.

  3. Para enumerar las suscripciones, ejecuta el siguiente comando en la terminal:

    python3 list_subscriptions.py

La API de Google Workspace Events devuelve un array paginado de objetos Subscription que coinciden con el filtro de tu consulta.