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