На этой странице объясняется, как вывести список подписок Google Workspace с помощью метода subscriptions.list() .
При вызове этого метода с аутентификацией пользователя он возвращает список подписок, авторизованных пользователем. При использовании аутентификации приложения метод может возвращать список, содержащий все подписки для приложения.
Предварительные требования
Apps Script
- Подписка на Google Workspace. Чтобы создать ее, см. раздел «Создание подписки» .
- Проект на Apps Script:
- Используйте свой проект Google Cloud вместо проекта, автоматически создаваемого Apps Script по умолчанию.
- Для всех областей действия (scopes), которые вы добавили для настройки экрана согласия OAuth, необходимо также добавить эти области в файл
appsscript.jsonв вашем проекте Apps Script. Например, если вы указали область действияchat.messages, добавьте следующее: - Включите расширенную службу «
Google Workspace Events.
"oauthScopes": [ "https://www.googleapis.com/auth/chat.messages" ]
Для каждого типа событий в подписке требуется аутентификация и соответствующая область авторизации :
- Для аутентификации пользователя требуется область действия, поддерживающая как минимум один из типов событий для подписки. Чтобы определить область действия, см. раздел «Области действия по типу события» .
- Для аутентификации приложения требуется область действия
chat.bot(только для приложений Google Chat).
Python
- Python 3.6 или выше
- Инструмент управления пакетами pip
- Новейшие клиентские библиотеки Google для Python. Для их установки или обновления выполните следующую команду в командной строке:
pip3 install --upgrade google-api-python-client google-auth-oauthlib
- Подписка на Google Workspace. Чтобы создать ее, см. раздел «Создание подписки» .
Для каждого типа событий в подписке требуется аутентификация и соответствующая область авторизации :
- Для аутентификации пользователя требуется область действия, поддерживающая как минимум один из типов событий для подписки. Чтобы определить область действия, см. раздел «Области действия по типу события» .
- Для аутентификации приложения требуется область действия
chat.bot(только для приложений Google Chat).
Список подписок, авторизованных пользователем
Для отображения списка подписок необходимо отфильтровать данные как минимум по одному типу событий. Вы также можете отфильтровать запрос по одному или нескольким целевым ресурсам. Информацию о поддерживаемых фильтрах запроса см. в документации по методу list() .
Приведенный ниже пример кода возвращает массив объектов Subscription , отфильтрованных по типу события и целевому ресурсу. При аутентификации пользователя метод возвращает только список подписок, на создание которых пользователь разрешил приложению.
Чтобы отобразить список подписок на указанный тип события и целевой ресурс:
Apps Script
В проекте 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.
-
Чтобы вывести список подписок, запустите функцию
listSubscriptionsв вашем проекте Apps Script.
Python
В рабочей директории создайте файл с именем
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.
-
В рабочей директории убедитесь, что вы сохранили учетные данные клиента OAuth и назвали файл
credentials.json. В примере кода этот JSON-файл используется для аутентификации в Google Workspace и получения учетных данных пользователя. Инструкции см. в разделе «Создание учетных данных клиента OAuth» .Чтобы отобразить список подписок, выполните в терминале следующую команду:
python3 list_subscriptions.py
API событий Google Workspace возвращает постраничный массив объектов Subscription , соответствующих фильтру вашего запроса.