이 가이드에서는 Google Workspace 관리자가 Google Chat API의 Space
리소스에서 search()
메서드를 사용하여 조직 전반에서 이름이 지정된 스페이스를 관리하고 관리 작업을 실행하는 방법을 설명합니다.
Google Workspace 관리자는 Chat API를 사용하여 이름이 지정된 스페이스만 관리할 수 있습니다. 이름이 지정된 스페이스는 SPACE
의 SpaceType
로 정의됩니다. 이름이 지정된 스페이스는 사용자가 메시지를 보내고, 파일을 공유하고, 공동작업하는 지속적인 장소입니다. Chat API를 사용하여 다이렉트 메시지 (DM) 또는 그룹 채팅을 관리할 수는 없습니다.
Space
리소스는 사용자와 Chat 앱이 메시지를 보내고, 파일을 공유하고, 공동작업할 수 있는 장소를 나타냅니다. 스페이스에는 다음과 같은 여러 유형이 있습니다.
- 채팅 메시지 (DM)는 두 사용자 간의 대화 또는 사용자와 Chat 앱 간의 대화입니다.
- 그룹 채팅은 3명 이상의 사용자와 Chat 앱 간의 대화입니다.
- 이름이 지정된 스페이스는 사용자가 메시지를 보내고, 파일을 공유하고, 공동작업하는 지속적인 공간입니다.
Google Workspace 관리자는 Chat API를 사용하여 다음과 같은 방법으로 조직에서 이름이 지정된 스페이스를 검색하고 관리할 수 있습니다.
- 조직의 스페이스를 감사합니다.
search()
메서드를 사용하면 생성 날짜, 마지막 활동 날짜, 구성원 수, 기록 설정 상태, 외부 게스트 초대 기능 등 각 스페이스의 설정 및 메타데이터에 관한 세부정보와 함께 조직의 모든 스페이스 목록을 검색할 수 있습니다. - 비활성 스페이스를 찾아 삭제합니다.
search()
메서드를 사용하면 지정된 날짜와 시간 이후 사용되지 않은 스페이스를 찾아 삭제할 수 있습니다. 자세한 내용과 샘플 코드는 비활성 스페이스 찾기 및 삭제를 참고하세요. - 검색 기준에 따라 스페이스 목록을 내보냅니다.
search()
메서드를 사용하면query
에 지정된 기준을 충족하는 스페이스 목록을 검색하고 분석을 위해 결과를 CSV 파일로 내보낼 수 있습니다. - 스페이스 관리자를 찾아 연락합니다.
search()
메서드를 사용하여 조직의 모든 스페이스 목록을 가져온 다음members.list()
메서드를 사용하여 관리자인 모든 스페이스 회원 목록을 가져올 수 있습니다. - 지정된 관리자가 없는 스페이스를 찾습니다.
search()
메서드를 사용하여 조직의 모든 스페이스 목록을 가져온 다음members.list()
메서드를 사용하여 관리자가 없는 스페이스 목록을 가져올 수 있습니다.
기본 요건
Python
- Google Chat에 액세스할 수 있는 비즈니스 또는 엔터프라이즈 Google Workspace 계정
- 환경을 설정합니다.
- Google Cloud 프로젝트를 만듭니다.
- OAuth 동의 화면 구성
- Chat 앱의 이름, 아이콘, 설명을 사용하여 Google Chat API를 사용 설정하고 구성합니다.
- Python Google API 클라이언트 라이브러리를 설치합니다.
- 데스크톱 애플리케이션의
OAuth 클라이언트 ID 사용자 인증 정보 만들기 이 가이드에서 샘플을 실행하려면 사용자 인증 정보를
client_secrets.json
라는 JSON 파일로 로컬 디렉터리에 저장합니다.
- 사용자 인증을 지원하는 승인 범위를 선택합니다.
- Google Workspace 조직에 대한 Chat 및 스페이스 대화 관리 관리자 권한이 있어야 합니다.
관리자로 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( 'client_secrets.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( 'client_secrets.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