На этой странице объясняется, как составить список подписок Google Workspace с помощью метода subscriptions.list()
.
При вызове этого метода с аутентификацией пользователя метод возвращает список подписок, авторизованных пользователем. При использовании аутентификации приложения метод может вернуть список, содержащий любые подписки для приложения.
Предпосылки
Скрипт приложений
- Подписка на Google Workspace. Чтобы создать её, см. раздел Создание подписки .
Требуется аутентификация пользователя с одной или несколькими областями, поддерживающими все типы событий для подписки .
- Проект Apps Script:
- Используйте свой проект Google Cloud вместо проекта по умолчанию, созданного автоматически Apps Script.
- Для всех областей действия, добавленных для настройки экрана согласия OAuth, необходимо также добавить их в файл
appsscript.json
в проекте Apps Script. Например, если вы указали область действияchat.messages
, добавьте следующее: - Включите расширенную службу
Google Workspace Events
.
"oauthScopes": [ "https://www.googleapis.com/auth/chat.messages" ]
Питон
- 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 создайте новый файл скрипта с именем
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,google.workspace.chat.message.v1.created
. -
TARGET_RESOURCE
: целевой ресурс , отформатированный как его полное имя. Например, для фильтрации по подпискам в пространстве Google Chat используйте//chat.googleapis.com/spaces/ SPACE_ID
, гдеspaces/ SPACE_ID
представляет собой полеname
ресурсаSpace
.
-
Чтобы вывести список подписок, запустите функцию
listSubscriptions
в проекте Apps Script.
Питон
В рабочем каталоге создайте файл с именем
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,google.workspace.chat.message.v1.created
. -
TARGET_RESOURCE
: целевой ресурс , отформатированный как его полное имя. Например, для фильтрации по подпискам в пространстве Google Chat используйте//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
, соответствующих фильтру вашего запроса.