このガイドでは、Google Workspace 管理者が Google Chat API の
Space リソースで
search() メソッドを使用して、組織全体の名前付きスペースを管理し、
管理タスクを実行する方法について説明します。
Google Workspace 管理者は、Chat API
を使用して、
SpaceTypeが
SPACEとして定義されている名前付きスペースのみを管理できます。名前付きスペースは、ユーザーがメッセージを送信したり、ファイルを共有したり、共同作業を行ったりする永続的な場所です。Chat API を使用して、ダイレクト メッセージ(DM)やグループ チャットを管理することはできません。
リソース
は、ユーザーと Chat アプリがメッセージの送信、
ファイルの共有、共同作業を行える場所を表します。Spaceスペースにはいくつかの種類があります。
- ダイレクト メッセージ(DM)は、2 人のユーザー間またはユーザーと 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 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のみです。- 必要に応じて、スペース検索をさらに絞り込むための追加のクエリを 1 つ以上指定します。たとえば、表示名のキーワード(
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