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