Google Chat スペースのイベントを一覧表示する

このガイドでは、Google Chat API の SpaceEvent リソースlist メソッドを使用して、スペース内のリソースに対する変更を一覧表示する方法について説明します。

SpaceEvent リソースは、スペースの子リソース(メッセージ、リアクション、メンバーシップなど)を含む、ターゲット スペースの変更を表します。サポートされているイベントタイプとイベント ペイロードのリストについては、SpaceEvent リソースのリファレンス ドキュメントの eventType フィールドと payload フィールドをご覧ください。

リクエストの時点から最大 28 日前まで、イベントを一覧表示できます。サーバーは、影響を受けるリソースの最新バージョンを含むイベントを返します。たとえば、スペースの新しいメンバーに関するイベントを一覧表示すると、サーバーは最新のメンバーの詳細を含む Membership リソースを返します。リクエストされた期間中に新しいメンバーが削除された場合、イベント ペイロードには空の Membership リソースが含まれます。

このメソッドを呼び出すには、ユーザー認証を使用する必要があります。スペースのイベントを一覧表示するには、認証されたユーザーがスペースのメンバーである必要があります。

前提条件

Python

  • Python 3.6 以降
  • pip パッケージ管理ツール
  • Python 用の最新の Google クライアント ライブラリ。これらをインストールまたは更新するには、コマンドライン インターフェースで次のコマンドを実行します。

    pip3 install --upgrade google-api-python-client google-auth-oauthlib
    
  • Google Chat API が有効で構成された Google Cloud プロジェクト。手順については、Google Chat アプリを作成するをご覧ください。
  • Chat アプリ用に構成された認可。SpaceEvent リソースの一覧表示では、次の認証方法がサポートされています。

スペースのイベントを一覧表示する

Chat スペースのスペースのイベントを一覧表示するには、次の操作を行います。

  • SpaceEvent リソースlist メソッドを呼び出します。
  • 一覧表示するイベントタイプを指定するには、filter フィールドを使用します。少なくとも 1 つのイベントタイプを指定する必要があります。日付でフィルタすることもできます。サポートされているイベントタイプの一覧については、eventType フィールドをご覧ください。
  • ユーザー認証では、リクエストで各イベントタイプをサポートする承認スコープを 1 つ以上指定します。アプリを機能させるため、最も制限の厳しいスコープを選択することをおすすめします。スコープを選択するには、認証と認可の概要をご覧ください。

次のコードサンプルでは、スペース内の新しいメンバーシップとメッセージに関するイベントを一覧表示します。

Python

  1. 作業ディレクトリに、chat_space_event_list.py という名前のファイルを作成します。
  2. chat_space_event_list.py に次のコードを追加します。

    """Lists SpaceEvent resources from the Chat API."""
    
    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",
    "https://www.googleapis.com/auth/chat.messages.readonly"]
    
    # 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().spaceEvents().list(
    
        # The space from which to list events.
        #
        # Replace SPACE with a space name.
        # Obtain the space name from the spaces resource of Chat API,
        # or from a space's URL.
        parent='spaces/SPACE',
    
        # A required filter. Filters and returns events about new memberships and messages
        filter='event_types:"google.workspace.chat.membership.v1.created" OR event_types:"google.workspace.chat.message.v1.created"'
    
    ).execute()
    
    # Prints details about the created space events.
    print(result)
    
  3. コードで、次のように置き換えます。

    • SPACE: スペース名。Chat API の spaces.list メソッドまたはスペースの URL から取得できます。
  4. 作業ディレクトリで、サンプルをビルドして実行します。

    python3 chat_space_event_list.py
    

Chat API は、新しいメンバーシップとメッセージに関する SpaceEvent リソース イベントのリストを返します。

ページ分けをカスタマイズする

必要に応じて、次のクエリ パラメータを渡してページ分けをカスタマイズします。

  • pageSize: 返される SpaceEvent リソースの最大数。サービスはこの値よりも少ない数を返す場合があります。負の値を指定すると INVALID_ARGUMENT エラーが返されます。
  • pageToken: 前のリストスペース イベント呼び出しから受け取ったページトークン。次のページを取得するには、このトークンを指定します。ページ分割を行う場合、フィルタ値はページトークンを提供した呼び出しと一致する必要があります。別の値を渡すと、予期しない結果が生じる可能性があります。