이 가이드에서는 Google Workspace 관리자가 Google Chat API의 Space
리소스에서 search()
메서드를 사용하여 조직 전체에서 이름이 지정된 스페이스를 관리하고 관리 작업을 실행하는 방법을 설명합니다.
Google Workspace 관리자는 Chat API를 사용하여 SPACE
의 SpaceType
로 정의된 명명된 스페이스만 관리할 수 있습니다. 이름이 지정된 스페이스는 사용자가 메시지를 보내고, 파일을 공유하고, 공동작업하는 지속적인 공간입니다. Chat API를 사용하여 다이렉트 메시지 (DM) 또는 그룹 채팅을 관리할 수 없습니다.
Space
리소스는 사용자와 Chat 앱이 메시지를 보내고, 파일을 공유하고, 공동작업할 수 있는 공간을 나타냅니다. 스페이스에는 다음과 같은 여러 유형이 있습니다.
- 채팅 메시지 (DM)는 두 사용자 간 또는 사용자와 채팅 앱 간의 대화입니다.
- 그룹 채팅은 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 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