このガイドでは、Google Chat API の membership
リソースの list
メソッドを使用して、スペース内のユーザーと Chat アプリをページ分けされたフィルタ可能なメンバーシップ リストとして一覧表示する方法について説明します。アプリ認証を使用してメンバーシップを一覧表示すると、Chat アプリがアクセスできるスペースのメンバーシップが一覧表示されますが、Chat アプリのメンバーシップは除外されます。ユーザー認証を使用してメンバーシップを一覧表示すると、認証されたユーザーがアクセスできるスペースのメンバーが一覧表示されます。
Membership
リソースは、人間のユーザーまたは Google Chat アプリがスペースに招待されているか、スペースに含まれているか、またはスペースから退出しているかを表します。
前提条件
Python
- Python 3.6 以降
- pip パッケージ管理ツール
Python 用の最新の Google クライアント ライブラリ。これらをインストールまたは更新するには、コマンドライン インターフェースで次のコマンドを実行します。
pip3 install --upgrade google-api-python-client google-auth-oauthlib google-auth
- Google Chat API が有効で構成された Google Cloud プロジェクト。手順については、Google Chat アプリを作成するをご覧ください。
Chat アプリ用に構成された承認。メンバーシップのリスティングでは、次の両方の認証方法がサポートされています。
ユーザー認証を使用してスペース内のユーザーと Chat アプリを一覧表示する
認証されたユーザーがアクセスできるスペース内のユーザーと Chat アプリを一覧表示するには、リクエストに以下を渡します。
- ユーザー認証で、
chat.memberships.readonly
またはchat.memberships
承認スコープを指定します。 membership
リソースでlist
メソッドを呼び出します。
次の例では、filter
が ROLE_Member
に設定されているため、認証済みのユーザーに表示される人間スペースのメンバー(スペースの管理者ではない)を一覧表示します。
Python
- 作業ディレクトリに、
chat_member_list_user.py
という名前のファイルを作成します。 chat_member_list_user.py
に次のコードを追加します。from google_auth_oauthlib.flow import InstalledAppFlow from googleapiclient.discovery import build # Define your app's authorization scopes. # When modifying these scopes, delete the file token.json, if it exists. SCOPES = ["https://www.googleapis.com/auth/chat.memberships.readonly"] def main(): ''' Authenticates with Chat API via user credentials, then lists human space members (but not space managers) in a specified space. ''' # 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) # Use the service endpoint to call Chat API. result = chat.spaces().members().list( # The space for which to list memberships. parent = 'spaces/SPACE', # An optional filter that returns only human space members. filter = 'member.type = "HUMAN" AND role = "ROLE_MEMBER"' ).execute() # Prints the list of memberships. print(result) if __name__ == '__main__': main()
コードで
SPACE
をスペース名に置き換えます。スペース名は、Chat API のspaces.list
メソッドまたはスペースの URL から取得できます。作業ディレクトリで、サンプルをビルドして実行します。
python3 chat_member_list_user.py
Google Chat API は、指定したスペースのヒューマン スペースのメンバー(スペースの管理者を除く)とアプリメンバーのリストを返します。
アプリ認証を使用してスペース内のユーザーと Chat アプリを一覧表示する
認証されたアプリがアクセスできるスペース内のユーザーと Chat アプリを一覧表示するには、リクエストに以下を渡します。
- アプリ認証で、
chat.bot
承認スコープを指定します。 member
リソースでlist
メソッドを呼び出します。
次の例では、Chat アプリに表示される(スペースの管理者ではない)ヒューマン スペースのメンバーを一覧表示します。
Python
- 作業ディレクトリに、
chat_member_list_app.py
という名前のファイルを作成します。 chat_member_list_app.py
に次のコードを追加します。from google.oauth2 import service_account from apiclient.discovery import build # Specify required scopes. SCOPES = ['https://www.googleapis.com/auth/chat.bot'] # Specify service account details. CREDENTIALS = ( service_account.Credentials.from_service_account_file('credentials.json') .with_scopes(SCOPES) ) # Build the URI and authenticate with the service account. chat = build('chat', 'v1', credentials=CREDENTIALS) # Use the service endpoint to call Chat API. result = chat.spaces().members().list( # The space for which to list memberships. parent = 'spaces/SPACE', # An optional filter that returns only human space members. filter = 'member.type = "HUMAN" AND role = "ROLE_MEMBER"' ).execute() print(result)
コードで
SPACE
をスペース名に置き換えます。スペース名は、Chat API のspaces.list
メソッドまたはスペースの URL から取得できます。作業ディレクトリで、サンプルをビルドして実行します。
python3 chat_member_list_app.py
Google Chat API は、指定されたスペースからヒューマン スペースのメンバー(スペースの管理者を除く)のリストを返します。
ページ分けのカスタマイズやリストのフィルタリングを行う
メンバーシップを一覧表示するには、次のクエリ パラメータを渡して、一覧表示されたメンバーシップのページ設定をカスタマイズまたはフィルタします。
pageSize
: 返されるメンバーシップの最大数。サービスはこの値よりも少ない数を返す場合があります。指定しない場合は、最大 100 個のスペースが返されます。最大値は 1,000 です。1,000 を超える値は、自動的に 1,000 に変更されます。pageToken
: 前回のリスト スペース呼び出しから受け取ったページトークン。次のページを取得するには、このトークンを指定します。ページ分割を行う場合、フィルタ値はページトークンを提供した呼び出しと一致する必要があります。別の値を渡すと、予期しない結果が生じる可能性があります。filter
: クエリフィルタ。ユーザー認証が必要です。サポートされているクエリの詳細については、spaces.members.list
メソッドをご覧ください。
関連トピック
- ユーザーまたは Chat アプリのメンバーシップの詳細を取得する。
- ユーザーまたは Chat アプリをスペースに招待または追加する。
- Google Chat スペースでユーザーのメンバーシップを更新する。
- スペースからユーザーまたは Chat アプリを削除する