Получение списка подписок на Google Workspace

На этой странице объясняется, как вывести список подписок Google Workspace с помощью метода subscriptions.list() .

При вызове этого метода с аутентификацией пользователя он возвращает список подписок, авторизованных пользователем. При использовании аутентификации приложения метод может возвращать список, содержащий все подписки для приложения.

Предварительные требования

Apps Script

  • Проект на Apps Script:
    • Используйте свой проект Google Cloud вместо проекта, автоматически создаваемого Apps Script по умолчанию.
    • Для всех областей действия (scopes), которые вы добавили для настройки экрана согласия OAuth, необходимо также добавить эти области в файл appsscript.json в вашем проекте Apps Script. Например, если вы указали область действия chat.messages , добавьте следующее:
    • "oauthScopes": [
        "https://www.googleapis.com/auth/chat.messages"
      ]
          
    • Включите расширенную службу « Google Workspace Events .

Python

  • Python 3.6 или выше
  • Инструмент управления пакетами pip
  • Новейшие клиентские библиотеки Google для Python. Для их установки или обновления выполните следующую команду в командной строке:
      pip3 install --upgrade google-api-python-client google-auth-oauthlib
      

Список подписок, авторизованных пользователем

Для отображения списка подписок необходимо отфильтровать данные как минимум по одному типу событий. Вы также можете отфильтровать запрос по одному или нескольким целевым ресурсам. Информацию о поддерживаемых фильтрах запроса см. в документации по методу list() .

Приведенный ниже пример кода возвращает массив объектов Subscription , отфильтрованных по типу события и целевому ресурсу. При аутентификации пользователя метод возвращает только список подписок, на создание которых пользователь разрешил приложению.

Чтобы отобразить список подписок на указанный тип события и целевой ресурс:

Apps Script

  1. В проекте Apps Script создайте новый файл скрипта с именем listSubscriptions и добавьте следующий код:

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

    Замените следующее:

    • EVENT_TYPE : Тип события , отформатированный в соответствии со спецификацией CloudEvents. Например, для фильтрации подписок, получающих события о новых членствах в чате, google.workspace.chat.message.v1.created .
    • TARGET_RESOURCE : Целевой ресурс , отформатированный как его полное имя. Например, чтобы отфильтровать данные по подпискам для пространства чата, используйте //chat.googleapis.com/spaces/ SPACE_ID где spaces/ SPACE_ID представляет собой поле name ресурса Space .
  2. Чтобы вывести список подписок, запустите функцию listSubscriptions в вашем проекте Apps Script.

Python

  1. В рабочей директории создайте файл с именем list_subscriptions.py и добавьте в него следующий код:

    """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)
    

    Замените следующее:

    • SCOPE : Область действия OAuth, поддерживающая как минимум один тип событий из подписки . Например, если ваша подписка получает события обновления пространства чата, https://www.googleapis.com/auth/chat.spaces.readonly .
    • EVENT_TYPE : Тип события , отформатированный в соответствии со спецификацией CloudEvents. Например, для фильтрации подписок, получающих события о новых членствах в чате, google.workspace.chat.message.v1.created .
    • TARGET_RESOURCE : Целевой ресурс , отформатированный как его полное имя. Например, чтобы отфильтровать данные по подпискам для пространства чата, используйте //chat.googleapis.com/spaces/ SPACE_ID где spaces/ SPACE_ID представляет собой поле name ресурса Space .
  2. В рабочей директории убедитесь, что вы сохранили учетные данные клиента OAuth и назвали файл credentials.json . В примере кода этот JSON-файл используется для аутентификации в Google Workspace и получения учетных данных пользователя. Инструкции см. в разделе «Создание учетных данных клиента OAuth» .

  3. Чтобы отобразить список подписок, выполните в терминале следующую команду:

    python3 list_subscriptions.py

API событий Google Workspace возвращает постраничный массив объектов Subscription , соответствующих фильтру вашего запроса.