このガイドでは、Google Workspace 管理者が Google Chat API の Space
リソースで search()
メソッドを使用して、組織全体の名前付きスペースを管理し、管理タスクを実行する方法について説明します。
Google Workspace 管理者は、Chat API を使用して、SPACE
の SpaceType
として定義されている名前付きスペースのみを管理できます。名前付きスペースは、ユーザーがメッセージを送信したり、ファイルを共有したり、共同作業を行ったりする永続的な場所です。Chat API を使用してダイレクト メッセージ(DM)やグループ チャットを管理することはできません。
Space
リソースは、ユーザーと Chat 用アプリがメッセージの送信、ファイルの共有、共同作業を行える場所を表します。スペースにはいくつかの種類があります。
- ダイレクト メッセージ(DM)は、2 人のユーザー間、またはユーザーと Chat 用アプリ間の会話です。
- グループ チャットは、3 人以上のユーザーと Chat 用アプリ間の会話です。
- 名前付きスペースは、ユーザーがメッセージの送信、ファイルの共有、共同作業を行うための永続的な場所です。
Google Workspace 管理者は、Chat API を使用して、組織内の名前付きスペースを次の方法で検索、管理できます。
- 組織内のスペースを監査します。
search()
メソッドを使用すると、組織内のすべてのスペースのリストを取得できます。このリストには、各スペースの設定に関する詳細情報、作成日、最終アクティビティ日、メンバー数、履歴設定のステータス、外部ゲストの招待機能などのメタデータが含まれています。 - 利用されなくなったスペースの検出と削除。
search()
メソッドを使用すると、特定の日時以降に使用されていないスペースを見つけて削除できます。詳細とサンプルコードについては、アクティブでないスペースを見つけて削除するをご覧ください。 - 検索条件に基づいてスペースのリストをエクスポートします。
search()
メソッドを使用すると、query
で指定された条件を満たすスペースのリストを取得し、結果を分析用に CSV ファイルにエクスポートできます。 - スペースの管理者を検索して連絡する。
search()
メソッドを使用して組織内のすべての Space のリストを取得し、members.list()
メソッドを使用して、管理者のすべての Space メンバーのリストを取得できます。 - 管理者なしのスペースを検索します。
search()
メソッドを使用して組織内のすべての Space のリストを取得し、members.list()
メソッドを使用して管理者がいない Space のリストを取得できます。
前提条件
Python
- Google Chat へのアクセス権を持つ Business または Enterprise の Google Workspace アカウント。
- 環境を設定します。
- Google Cloud プロジェクトを作成します。
- OAuth 同意画面を構成する。
- Chat 用アプリの名前、アイコン、説明を使用して、Google Chat API を有効にして構成します。
- Python Google API クライアント ライブラリをインストールします。
- デスクトップ アプリケーションの
OAuth クライアント ID 認証情報を作成します。このガイドのサンプルを実行するには、認証情報を
credentials.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( '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