이 가이드에서는 Google Workspace 관리자가 Google Chat API의
Space 리소스에서
search() 메서드를 사용하여 조직 전반에서 이름 지정된 스페이스를 관리하고
관리 작업을 수행하는 방법을 설명합니다.
Google Workspace 관리자는 Chat API
를 사용하여
SpaceType이
SPACE로 정의된 이름 지정된 스페이스만 관리할 수 있습니다. 이름 지정된 스페이스는 사용자가 메시지를 보내고, 파일을 공유하고, 공동작업하는 영구적인 장소입니다. Chat API를 사용하여 채팅 메시지 (DM) 또는 그룹 채팅을 관리할 수는 없습니다.
`Space` 리소스는 사용자와 Chat 앱이 메시지를 보내고, 파일을 공유하고, 공동작업할 수 있는 장소를 나타냅니다.Space 다음과 같이 여러 유형의 스페이스가 있습니다.
- 채팅 메시지 (DM)는 두 사용자 또는 사용자와 Chat 앱 간의 대화입니다.
- 그룹 채팅은 3명 이상의 사용자와 Chat 앱 간의 대화입니다.
- 이름 지정된 스페이스는 사용자가 메시지를 보내고, 파일을 공유하고, 공동작업하는 영구적인 장소입니다.
Google Workspace 관리자는 Chat API를 사용하여 다음과 같은 방법으로 조직에서 이름 지정된 스페이스를 검색하고 관리할 수 있습니다.
- 조직의 스페이스 감사.
search()메서드를 사용하면 각 스페이스의 설정 및 메타데이터(예: 생성 날짜, 마지막 활동 날짜, 멤버 수, 기록 설정 상태, 외부 게스트 초대 기능)에 대한 세부정보와 함께 조직의 모든 스페이스 목록을 가져올 수 있습니다. - 비활성 스페이스 찾기 및 삭제.
search()메서드를 사용하면 지정된 날짜와 시간 이후로 사용되지 않은 스페이스를 찾은 다음 삭제할 수 있습니다. 자세한 내용과 샘플 코드는 비활성 스페이스 찾기 및 삭제를 참고하세요. - 검색 기준에 따라 스페이스 목록 내보내기.
search()메서드를 사용하면query에 지정된 기준을 충족하는 스페이스 목록을 가져오고 분석을 위해 결과를 CSV 파일로 내보낼 수 있습니다. - 스페이스 관리자 찾기 및 연락하기.
search()메서드를 사용하여 조직의 모든 스페이스 목록을 가져온 다음members.list()메서드 를 사용하여 관리자인 모든 스페이스 멤버 목록을 가져올 수 있습니다. - 지정된 관리자가 없는 스페이스 찾기.
search()메서드를 사용하여 조직의 모든 스페이스 목록을 가져온 다음members.list()메서드를 사용하여 관리자가 없는 스페이스 목록을 가져올 수 있습니다.
기본 요건
Python
- Google Chat에 액세스할 수 있는 Business 또는 Enterprise Google Workspace 계정 Google Chat
- 환경을 설정합니다.
- Google Cloud 프로젝트를 만듭니다.
- OAuth 동의 화면 구성.
- Chat 앱의 이름, 아이콘, 설명으로 Google Chat API를 사용 설정하고 구성합니다.
- Python Google API 클라이언트 라이브러리를 설치합니다.
-
데스크톱 애플리케이션의 OAuth 클라이언트 ID 사용자 인증 정보를 만듭니다. 이 가이드의 샘플을 실행하려면 사용자 인증 정보를
credentials.json이라는 JSON 파일로 로컬 디렉터리에 저장합니다.
- 사용자 인증을 지원하는 승인 범위를 선택합니다.
- Google Workspace 조직에 채팅 및 스페이스 대화 관리 관리자 권한 이 있어야 합니다.
관리자로 Google Chat API 호출
관리자 권한이 있는 사용자로 인증하려면 요청에 다음을 전달해야 합니다.
- 관리자 권한으로 사용자 인증을 지원하는 승인 범위 를 지정합니다.
useAdminAccess필드를true로 설정합니다.
이 섹션에서는 관리자로 Chat API를 호출하는 다음 예시를 보여줍니다.
- 스페이스를 검색하려면
search()메서드를 호출합니다. - 비활성 스페이스 찾기 및 삭제 조직에서
search()메서드를 호출하여 비활성 상태인 스페이스 목록을 반환한 다음delete()메서드를 호출하여 스페이스를 삭제합니다.
조직 전반에서 스페이스 검색
이 예시에서는 Google Workspace 관리자가 Chat API의 Space 리소스에서 search() 메서드를 사용하여 지정된 기준에 따라 조직 전반에서 스페이스를 검색하는 방법을 설명합니다.
사용자 인증 및 관리자 권한으로 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'가 포함된 표시 이름으로 스페이스를 검색하는 방법을 보여줍니다.
Python
- 작업 디렉터리에
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 관리자가 Chat API의 Space 리소스에서 search() 메서드를 사용하여 비활성 스페이스를 찾은 다음 useAdminAccess 매개변수와 함께 delete() 메서드를 사용하여 삭제하는 방법을 설명합니다.
더 이상 활발하게 사용되지 않는 비활성 Google Chat 스페이스는 중요한 저장공간을 차지하고 사용자 인터페이스를 어수선하게 만들 수 있습니다. 관리자는 search() 메서드를 사용하여 지정된 날짜와 시간(예: 2개월 전) 이후로 사용되지 않은 스페이스를 찾을 수 있습니다. 스페이스 목록이 열거되면 관리자는 스페이스를 업데이트하거나 삭제하는 등의 조치를 취할 수 있습니다.
사용자 인증 및 관리자 권한으로 비활성 스페이스 목록을 검색한 다음 삭제하려면 요청에 다음을 전달합니다.
- 비활성 스페이스를 검색하려면 다음을 지정합니다.
chat.admin.spaces또는chat.admin.spaces.readonly승인 범위를 지정합니다.Spaces리소스에서search()메서드를 호출합니다.INACTIVE_SPACE_DEADLINE을 반환할 스페이스를 결정하는 마지막 활동의 날짜와 시간으로 설정합니다.useAdminAccess=true를 지정합니다.- 검색
query매개변수를 지정하여 결과를 필터링합니다.customer = "customers/my_customer"- 필수이며 지원되는 유일한 값은customers/my_customer입니다.spaceType = "SPACE"- 필수이며 지원되는 유일한 값은SPACE입니다.lastActiveTime- 비활성 스페이스만 반환하도록 요청을 필터링하려면lastActiveTime을 지정합니다.
- 검색 결과에서 비활성 스페이스를 삭제하려면 다음을 지정합니다.
chat.admin.delete승인 범위를 지정합니다.Spaces리소스에서delete()메서드를 호출합니다.useAdminAccess=true를 지정합니다.
다음 코드는 관리자 권한을 사용하여 비활성 스페이스를 검색하고 삭제하는 방법을 보여줍니다.
Python
작업 디렉터리에
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를 YYYY-MM-DDTHH:MM:SS+HH:MM 형식의 날짜 및 시간으로 바꿉니다. 예를 들어 '2024-06-01T00:00:00+00:00'입니다.작업 디렉터리에서 다음 샘플을 빌드하고 실행합니다.
python3 find_and_delete_inactive_spaces.py