Google Workspace サブスクリプションを更新または更新する

このページでは、Google Workspace サブスクリプションを 更新する subscriptions.update() 方法について説明します。このメソッドを使用すると、サブスクリプションの有効期限を更新できます。たとえば、サブスクリプションを可能な限り最長の有効期限で更新したり、ターゲット リソースに関するイベントタイプのリストを更新したりできます。

Apps Script

  • Apps Script プロジェクト:
    • Apps Script によって自動的に作成されるデフォルトのプロジェクトではなく、Google Cloud プロジェクトを使用します。
    • OAuth 同意画面を構成するために追加したすべてのスコープについて、Apps Script プロジェクトの appsscript.json ファイルにもスコープを追加する必要があります。たとえば、chat.messages スコープを指定した場合は、次のように追加します。
    • "oauthScopes": [
        "https://www.googleapis.com/auth/chat.messages"
      ]
          
    • 有効にする Google Workspace Events アドバンス サービス。

Python

  • Python 3.6 以降
  • pip パッケージ管理ツール
  • Python 用の最新の Google クライアント ライブラリ。インストールまたは更新するには、コマンドライン インターフェースで次の コマンドを実行します。
      pip3 install --upgrade google-api-python-client google-auth-oauthlib
      

Google Workspace サブスクリプションを更新する

このセクションでは、Google Workspace Events API の subscriptions.update() メソッドを使用して、サブスクリプションを最長の有効期限で更新します。最長の有効期限を指定するには、ttl リソースの Subscriptionフィールドを 0に更新します。

最長の有効期限は、イベント ペイロードに含まれるリソースデータによって異なります。有効期限について詳しくは、Google Workspace イベントの イベントデータをご覧ください。

Google Workspace サブスクリプションを更新するには:

Apps Script

  1. Apps Script プロジェクトで、updateSubscription という名前の新しいスクリプト ファイルを作成し、次のコードを追加します。

    function updateSubscription() {
      // The name of the subscription to update.
      const name = 'subscriptions/SUBSCRIPTION_ID';
    
      // Call the Workspace Events API using the advanced service.
      const response = WorkspaceEvents.Subscriptions.patch({
        ttl: '0s',
      }, name);
      console.log(response);
    }
    

    次のように置き換えます。

    • SUBSCRIPTION_ID: サブスクリプションの ID。ID を取得するには、次のいずれかを使用します。
      • uid フィールドの値。
      • name フィールドに示されているリソース名の ID。たとえば、リソース名が subscriptions/subscription-123 の場合は、subscription-123 を使用します。
  2. Google Workspace サブスクリプションを更新するには、Apps Script プロジェクトで関数 updateSubscription を実行します。

Python

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

    """Update subscription."""
    
    from google_auth_oauthlib.flow import InstalledAppFlow
    from googleapiclient.discovery import build
    
    # Specify required scopes.
    SCOPES = [SCOPES]
    
    # Authenticate with Google Workspace and get user authentication.
    flow = InstalledAppFlow.from_client_secrets_file('credentials.json', SCOPES)
    CREDENTIALS = flow.run_local_server()
    
    # Call the Workspace Events API using the service endpoint.
    service = build(
        'workspaceevents',
        'v1',
        credentials=CREDENTIALS,
      )
    
    BODY = {
        'ttl': {'seconds': 0},
    }
    NAME = 'subscriptions/SUBSCRIPTION_ID'
    response = (
        service.subscriptions()
        .patch(name=NAME, updateMask='ttl', body=BODY)
        .execute()
    )
    print(response)
    

    次のように置き換えます。

    • SCOPES: サブスクリプションの各イベントタイプをサポートする 1 つ以上の OAuth スコープ 。文字列の配列としてフォーマットされます。複数のスコープを一覧表示するには、カンマで区切ります。 例: 'https://www.googleapis.com/auth/chat.spaces.readonly', 'https://www.googleapis.com/auth/chat.memberships.readonly'
    • SUBSCRIPTION_ID: サブスクリプションの ID。ID を取得するには、次のいずれかを使用します。
      • uid フィールドの値。
      • name フィールドに示されているリソース名の ID。たとえば、リソース名が subscriptions/subscription-123 の場合は、subscription-123 を使用します。
  2. 作業ディレクトリに OAuth クライアント ID 認証情報を保存し、ファイルに credentials.json という名前を付けていることを確認します。このコードサンプルでは、この JSON ファイルを使用して Google Workspace で認証し、ユーザー認証情報を取得します。手順については、 OAuth クライアント ID 認証情報を作成するをご覧ください。

  3. Google Workspace サブスクリプションを更新するには、ターミナルで次のコマンドを実行します。

    python3 update_subscription.py
Google Workspace Events API は、 長時間実行オペレーションを返します。これには、Subscription リソースのインスタンスが含まれます。

更新された Subscription リソースの詳細を取得するには、 operations.get() メソッド を使用し、Operation リソースをsubscriptions.update() リクエストから返された指定します。それ以外の場合、以前のバージョンのサブスクリプションから Operation リソースを指定すると、レスポンスは空になります。

Google Chat アプリとしてサブスクリプションを更新または更新する

ユーザーとしてではなく、Chat アプリとして Chat イベントのサブスクリプションを更新または更新できます。プロセスは似ていますが、次の点が異なります。

  1. ユーザー認証ではなく、 管理者の 1 回限りの承認で Chat アプリとして認証します

  2. Chat アプリが Chat イベントをサブスクライブできるようにする認可スコープを指定します。これらの認可スコープは常に chat.app で始まり、次のものが含まれます。

    • https://www.googleapis.com/auth/chat.app.memberships: Chat スペースのメンバー イベントをサブスクライブします。
    • https://www.googleapis.com/auth/chat.app.memberships.readonly: Chat スペースのメンバー イベントをサブスクライブします。
    • https://www.googleapis.com/auth/chat.app.messages.readonly: Chat スペースのメッセージ イベントをサブスクライブします。
    • https://www.googleapis.com/auth/chat.app.spaces: Chat スペースのイベントをサブスクライブします。
    • https://www.googleapis.com/auth/chat.app.spaces.readonly: Chat スペースのイベントをサブスクライブします。

Google Workspace Events API を呼び出すスクリプトを作成する

次のコードサンプルは、Chat アプリの Google Workspace サブスクリプションを更新します。

Python

  """Update subscription."""

  from google.oauth2 import service_account
  from apiclient.discovery import build

  # Specify required scopes.
  SCOPES = [SCOPES]

  # Specify service account details.
  CREDENTIALS = (
      service_account.Credentials.from_service_account_file('credentials.json')
      .with_scopes(SCOPES)
  )

  # Call the Workspace Events API using the service endpoint.
  service = build(
      'workspaceevents',
      'v1beta',
      credentials=CREDENTIALS,
  )

  BODY = {
      'ttl': {'seconds': 0},
  }
  NAME = 'subscriptions/SUBSCRIPTION_ID'
  response = (
      service.subscriptions()
      .patch(name=NAME, updateMask='ttl', body=BODY)
      .execute()
  )
  print(response)

次のように置き換えます。

  • SCOPES: Chat アプリが Chat イベントをサブスクライブできるようにする認可スコープを指定します。これらの認可スコープは常に chat.app で始まり、次のものが含まれます。

    • https://www.googleapis.com/auth/chat.app.memberships: Chat スペースのメンバー イベントをサブスクライブします。
    • https://www.googleapis.com/auth/chat.app.memberships.readonly: Chat スペースのメンバー イベントをサブスクライブします。
    • https://www.googleapis.com/auth/chat.app.messages.readonly: Chat スペースのメッセージ イベントとリアクション イベントをサブスクライブします。
    • https://www.googleapis.com/auth/chat.app.spaces: Chat スペースのイベントをサブスクライブします。
    • https://www.googleapis.com/auth/chat.app.spaces.readonly: Chat スペースのイベントをサブスクライブします。
  • SUBSCRIPTION_ID: サブスクリプションの ID。ID を取得するには、次のいずれかを使用します。

    • uid フィールドの値。
    • name フィールドに示されているリソース名の ID。たとえば、リソース名が subscriptions/subscription-123 の場合は、subscription-123 を使用します。