В этом руководстве объясняется, как администратор Google Workspace может использовать метод search()
на ресурсе Space
API Google Chat для управления именованными пространствами в своей организации и выполнения административных задач.
Как администратор Google Workspace, вы можете использовать API чата только для управления именованными пространствами, которые определяются как SpaceType
со значением SPACE
. Именованные пространства — это постоянные места, где пользователи отправляют сообщения, обмениваются файлами и работают вместе. API чата нельзя использовать для управления прямыми сообщениями (DM) или групповыми чатами.
Ресурс Space
представляет собой место, где пользователи и чат-приложения могут отправлять сообщения, обмениваться файлами и работать вместе. Существует несколько типов пространств:
- Прямые сообщения (ЛС) — это беседы между двумя пользователями или пользователем и приложением чата.
- Групповые чаты — это беседы между тремя и более пользователями и приложениями чата.
- Именованные пространства — это постоянные места, где люди отправляют сообщения, обмениваются файлами и сотрудничают.
Как администратор Google Workspace, вы можете использовать API чата для поиска и управления именованными пространствами в вашей организации следующими способами:
- Аудит пространств в организации. Используя метод
search()
, вы можете получить список всех пространств в организации с подробной информацией о настройках каждого пространства и метаданными, такими как дата создания, дата последней активности, количество участников, статус настройки истории и возможность приглашать внешних гостей. - Поиск и удаление неактивных пробелов. Метод
search()
позволяет найти пробелы, не используемые с указанной даты и времени, а затем удалить их. Подробнее и пример кода см. в статье Поиск и удаление неактивных пробелов . - Экспортируйте список пространств на основе критериев поиска. Используя метод
search()
, вы можете получить список пространств, соответствующих критериям, указанным вquery
, и экспортировать результаты в CSV-файл для анализа. - Найдите менеджеров пространств и свяжитесь с ними. С помощью метода
search()
вы можете получить список всех пространств в организации, а затем с помощью методаmembers.list()
получить список всех участников пространства, являющихся менеджерами. - Найти пространства без назначенных менеджеров. С помощью метода
search()
можно получить список всех пространств в организации, а затем использовать методmembers.list()
для получения списка пространств, у которых нет менеджеров.
Предпосылки
Питон
- Учетная запись Google Workspace Business или Enterprise с доступом к Google Chat .
- Настройте свою среду:
- Создайте проект Google Cloud .
- Настройте экран согласия OAuth .
- Включите и настройте API Google Chat, указав имя, значок и описание для вашего приложения Chat.
- Установите клиентскую библиотеку Python Google API .
- Создайте учётные данные OAuth-клиента для настольного приложения. Чтобы запустить пример из этого руководства, сохраните учётные данные в виде JSON-файла с именем
credentials.json
в локальном каталоге.
- Выберите область авторизации , поддерживающую аутентификацию пользователя.
- У вас должны быть права администратора по управлению чатами и пространствами в вашей организации Google Workspace.
Вызовите API Google Chat от имени администратора
Чтобы пройти аутентификацию как пользователь с правами администратора , необходимо передать в запросе следующее:
- Укажите область авторизации , поддерживающую использование аутентификации пользователя с правами администратора.
- Установите для поля
useAdminAccess
значениеtrue
.
В этом разделе показаны следующие примеры вызова API чата от имени администратора:
- Поиск пробелов осуществляется путем вызова метода
search()
. - Найдите и удалите неактивные пространства в вашей организации, вызвав метод
search()
для возврата списка пространств, которые были неактивны, а затем вызвав методdelete()
для их удаления.
Поиск пространств в вашей организации
В этом примере объясняется, как администраторы Google Workspace могут использовать метод search()
в ресурсе Space
API чата для поиска пространств в организации на основе указанных критериев.
Для вызова метода search()
с аутентификацией пользователя и привилегиями администратора необходимо указать в запросе следующее:
- Укажите область авторизации
chat.admin.spaces
илиchat.admin.spaces.readonly
. - Укажите
useAdminAccess=true
. - Укажите параметры поискового
query
для фильтрации результатов:-
customer = "customers/my_customer"
— обязательное и единственное поддерживаемое значение —customers/my_customer
-
spaceType = "SPACE"
— обязательное и единственное поддерживаемое значение —SPACE
- При необходимости один или несколько дополнительных запросов для дальнейшей фильтрации поиска пространства, например, по ключевым словам в отображаемых именах (
displayName
), по дате создания (createTime
) или по активности пространства (lastActiveTime
).
-
В следующем коде показан пример использования прав администратора для поиска пространств с отображаемым именем, содержащим «Hello» и «World» в любой комбинации:
Питон
- В рабочем каталоге создайте файл с именем
search_spaces_for_hello_world.py
. Включите следующий код в
search_spaces_for_hello_world.py
:from google_auth_oauthlib.flow import InstalledAppFlow from googleapiclient.discovery import build SCOPES = [ 'https://www.googleapis.com/auth/chat.admin.spaces.readonly', ] def main(): # Authenticate with Google Workspace # and get user authorization. flow = InstalledAppFlow.from_client_secrets_file( 'credentials.json', SCOPES, ) creds = flow.run_local_server() # Build a service endpoint for Chat API. chat = build('chat', 'v1', credentials=creds) spaces = [] page_token = '' # Search for all spaces. while True: result = ( chat.spaces() .search( useAdminAccess=True, query=( 'customer = "customers/my_customer"' 'AND spaceType = "SPACE"' 'AND displayName:"Hello World"' ) pageToken=page_token, ) .execute() ) if 'spaces' not in result: print('No spaces found named Hello World.') return spaces.extend(result['spaces']) if 'nextPageToken' in result: page_token = result['nextPageToken'] else: break print(str(len(spaces)) + ' spaces found:') # Prints the list of spaces. print(spaces)
В вашем рабочем каталоге соберите и запустите пример:
python3 search_spaces_for_hello_world.py
Найти и удалить неактивные пространства
В этом примере объясняется, как администраторы Google Workspace могут использовать метод search()
в ресурсе Space
API чата для поиска неактивных пространств, а затем удалять их с помощью метода delete()
с параметром useAdminAccess
.
Неактивные чат-группы Google Chat, которые больше не используются активно, могут занимать ценное дисковое пространство и создавать беспорядок в пользовательском интерфейсе. Используя метод search()
, администраторы могут найти чат-группы, которые не использовались с указанной даты и времени, например, два месяца назад. После того, как список чат-групп будет пронумерован, администраторы могут предпринять над ними действия, например, обновить или удалить их.
Чтобы выполнить поиск списка неактивных пространств, а затем удалить их с аутентификацией пользователя и правами администратора , передайте в своих запросах следующее:
- Для поиска неактивных пространств укажите следующее:
- Укажите область авторизации
chat.admin.spaces
илиchat.admin.spaces.readonly
. - Вызовите метод
search()
на ресурсеSpaces
. - Установите
INACTIVE_SPACE_DEADLINE
на дату и время последней активности, определяющей возвращаемые пробелы. - Укажите
useAdminAccess=true
. - Укажите параметры поискового
query
для фильтрации результатов:-
customer = "customers/my_customer"
— обязательное и единственное поддерживаемое значение —customers/my_customer
-
spaceType = "SPACE"
— обязательное и единственное поддерживаемое значение —SPACE
-
lastActiveTime
— чтобы отфильтровать запрос и вернуть только неактивные пространства, укажитеlastActiveTime
-
- Укажите область авторизации
- Чтобы удалить неактивные пробелы из результатов поиска, укажите следующее:
- Укажите область авторизации
chat.admin.delete
. - Вызовите метод
delete()
для ресурсаSpaces
. - Укажите
useAdminAccess=true
.
- Укажите область авторизации
В следующем коде показан пример поиска неактивных пространств и их удаления с использованием прав администратора:
Питон
В рабочем каталоге создайте файл с именем
find_and_delete_inactive_spaces.py
.Включите следующий код в
find_and_delete_inactive_spaces.py
:from google_auth_oauthlib.flow import InstalledAppFlow from googleapiclient.discovery import build SCOPES = [ 'https://www.googleapis.com/auth/chat.admin.spaces.readonly', 'https://www.googleapis.com/auth/chat.admin.delete', ] # Any spaces that have not been active since this time will be deleted. INACTIVE_SPACE_DEADLINE = '"INACTIVE_DATE"' def main(): # Authenticate with Google Workspace # and get user authorization. flow = InstalledAppFlow.from_client_secrets_file( 'credentials.json', SCOPES, ) creds = flow.run_local_server() # Build a service endpoint for Chat API. chat = build('chat', 'v1', credentials=creds) spaces = [] page_token = '' # Search for all inactive spaces. while True: result = ( chat.spaces() .search( useAdminAccess=True, query=( 'customer = "customers/my_customer" AND spaceType = "SPACE" AND' ' lastActiveTime < ' ) + INACTIVE_SPACE_DEADLINE, pageToken=page_token, ) .execute() ) if 'spaces' not in result: print('No inactive spaces found.') return spaces.extend(result['spaces']) if 'nextPageToken' in result: page_token = result['nextPageToken'] else: break print(str(len(spaces)) + ' inactive spaces found:') # Prints the list of inactive spaces. print(spaces) # Delete all inactive spaces. for space in spaces: ( chat.spaces() .delete( useAdminAccess=True, name=space['name'], ) .execute() ) print( 'Deleted space: ' + space['displayName'] + ', Resource Name: ' + space['name'] ) if __name__ == '__main__': main()
В коде замените
INACTIVE_DATE
на дату и время в формате ГГГГ-ММ-ДДТЧЧ:ММ:СС+ЧЧ:ММ. Например, «2024-06-01T00:00:00+00:00».В вашем рабочем каталоге соберите и запустите пример:
python3 find_and_delete_inactive_spaces.py
Похожие темы
- Удалить пробелы
- Список участников в пространстве
- Управляйте чат-пространствами как администратор Google Workspace
- метод
spaces.search()