このページでは、subscriptions.list() メソッドを使用して Google Workspace サブスクリプションを一覧表示する方法について説明します。
ユーザー認証でこのメソッドを呼び出すと、ユーザーが承認した定期購入のリストが返されます。アプリ認証を使用すると、このメソッドはアプリの定期購入を含むリストを返すことができます。
前提条件
Apps Script
- Google Workspace サブスクリプション。作成するには、定期購入を作成するをご覧ください。
- Apps Script プロジェクト:
- Apps Script によって自動的に作成されるデフォルトのプロジェクトではなく、Google Cloud プロジェクトを使用します。
- OAuth 同意画面を構成するために追加したすべてのスコープについて、Apps Script プロジェクトの
appsscript.jsonファイルにもスコープを追加する必要があります。たとえば、chat.messagesスコープを指定した場合は、次のように追加します。 Google Workspace Events高度なサービスを有効にします。
"oauthScopes": [ "https://www.googleapis.com/auth/chat.messages" ]
サブスクリプションで認証と各イベントタイプに適した認可スコープが必要です。
- ユーザー認証の場合、サブスクリプションのイベントタイプの少なくとも 1 つをサポートするスコープが必要です。スコープを特定するには、イベントタイプ別のスコープをご覧ください。
- アプリの認証には、
chat.botスコープが必要です(Google Chat アプリのみ)。
Python
- Python 3.6 以降
- pip パッケージ管理ツール
- Python 用の最新の Google クライアント ライブラリ。インストールまたは更新するには、コマンドライン インターフェースで次のコマンドを実行します。
pip3 install --upgrade google-api-python-client google-auth-oauthlib
- Google Workspace サブスクリプション。作成するには、定期購入を作成するをご覧ください。
サブスクリプションで認証と各イベントタイプに適した認可スコープが必要です。
- ユーザー認証の場合、サブスクリプションのイベントタイプの少なくとも 1 つをサポートするスコープが必要です。スコープを特定するには、イベントタイプ別のスコープをご覧ください。
- アプリの認証には、
chat.botスコープが必要です(Google Chat アプリのみ)。
ユーザーが承認した定期購入を一覧表示する
定期購入を一覧表示するには、少なくとも 1 つのイベントタイプでフィルタする必要があります。1 つ以上のターゲット リソースでクエリをフィルタすることもできます。サポートされているクエリ フィルタについては、list() メソッドのドキュメントをご覧ください。
次のコードサンプルは、イベントタイプとターゲット リソースでフィルタされた Subscription オブジェクトの配列を返します。ユーザーとして認証された場合、このメソッドは、ユーザーがアプリによる作成を承認した定期購入のリストのみを返します。
指定したイベントタイプとターゲット リソースのサブスクリプションを一覧表示するには:
Apps Script
Apps Script プロジェクトで、
listSubscriptionsという名前の新しいスクリプト ファイルを作成し、次のコードを追加します。function listSubscriptions() { // Filter for event type (required). const eventType = 'EVENT_TYPE'; // Filter for target resource (optional). const targetResource = 'TARGET_RESOURCE'; const filter = `event_types:"${eventType}" AND target_resource="${targetResource}"` // Call the Workspace Events API using the advanced service. const response = WorkspaceEvents.Subscriptions.list({ filter }); console.log(response); }次のように置き換えます。
EVENT_TYPE: CloudEvents 仕様に従ってフォーマットされたイベントタイプ。たとえば、Google Chat スペースへの新しいメンバーシップに関するイベントを受信するサブスクリプションをフィルタするには、google.workspace.chat.message.v1.createdを使用します。TARGET_RESOURCE: ターゲット リソース。完全なリソース名としてフォーマットされます。たとえば、Google Chat スペースのサブスクリプションでフィルタするには、//chat.googleapis.com/spaces/SPACE_IDを使用します。ここで、spaces/SPACE_IDはSpaceリソースのnameフィールドを表します。
サブスクリプションを一覧表示するには、Apps Script プロジェクトで関数
listSubscriptionsを実行します。
Python
作業ディレクトリに
list_subscriptions.pyという名前のファイルを作成し、次のコードを追加します。"""List subscriptions.""" from google_auth_oauthlib.flow import InstalledAppFlow from googleapiclient.discovery import build # Specify required scopes. SCOPES = ['SCOPE'] # 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, ) # Filter for event type (required). EVENT_TYPE = 'EVENT_TYPE' # Filter for target resource (optional). TARGET_RESOURCE = 'TARGET_RESOURCE' FILTER = f'event_types:"{EVENT_TYPE}" AND target_resource="{TARGET_RESOURCE}"' response = service.subscriptions().list(filter=FILTER).execute() print(response)次のように置き換えます。
SCOPE: サブスクリプションの少なくとも 1 つのイベントタイプをサポートする OAuth スコープ。たとえば、サブスクリプションが更新された Chat スペースのイベントを受信する場合、https://www.googleapis.com/auth/chat.spaces.readonly。EVENT_TYPE: CloudEvents 仕様に従ってフォーマットされたイベントタイプ。たとえば、Google Chat スペースへの新しいメンバーシップに関するイベントを受信するサブスクリプションをフィルタするには、google.workspace.chat.message.v1.createdを使用します。TARGET_RESOURCE: ターゲット リソース。完全なリソース名としてフォーマットされます。たとえば、Google Chat スペースのサブスクリプションでフィルタするには、//chat.googleapis.com/spaces/SPACE_IDを使用します。ここで、spaces/SPACE_IDはSpaceリソースのnameフィールドを表します。
作業ディレクトリに OAuth クライアント ID の認証情報が保存され、ファイル名が
credentials.jsonになっていることを確認します。このコードサンプルでは、この JSON ファイルを使用して Google Workspace で認証を行い、ユーザー認証情報を取得します。手順については、OAuth クライアント ID の認証情報を作成するをご覧ください。サブスクリプションを一覧表示するには、ターミナルで次のコマンドを実行します。
python3 list_subscriptions.py
Google Workspace Events API は、クエリのフィルタに一致する Subscription オブジェクトのページ分割された配列を返します。