このガイドでは、Google Workspace 管理者が Google Chat API の Space
リソースの search()
メソッドを使用して、組織全体で名前付きスペースを管理し、管理タスクを実行する方法について説明します。
Google Workspace 管理者は、Chat API を使用して名前付きスペースのみを管理できます。名前付きスペースは、SPACE
の SpaceType
として定義されます。名前付きスペースは、ユーザーがメッセージの送信、ファイルの共有、コラボレーションを行うための永続的な場所です。Chat API を使用して、ダイレクト メッセージ(DM)やグループ チャットを管理することはできません。
Space
リソースは、ユーザーや Chat アプリがメッセージを送信したり、ファイルを共有したり、コラボレーションしたりできる場所を表します。スペースには次の 2 種類があります。
- ダイレクト メッセージ(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 へのアクセス権を持つビジネスまたはエンタープライズ向け Google Workspace アカウント。
- 環境を設定します。
- Google Cloud プロジェクトを作成します。
- OAuth 同意画面を構成する
- Google Chat API を有効にして構成し、Chat アプリの名前、アイコン、説明を指定します。
- 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
のみです。- 必要に応じて、スペース検索をさらにフィルタする 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( '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