В этом руководстве объясняется, как администратор 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()