このページでは、Google Workspace Events API を使用して Google Workspace リソースのサブスクリプションを作成する方法について説明します。Google Workspace サブスクリプションを使用すると、アプリは Google Workspace イベントに関する情報を受け取ることができます。これは、Google Workspace リソースの変更を表します。Google Workspace Events API でサポートされているリソースとイベントの種類については、Google Workspace Events API の概要をご覧ください。
このページでは、Google Workspace サブスクリプションを作成する手順について説明します。
- 環境をセットアップする。
- Google Cloud Pub/Sub トピックを作成してサブスクライブします。このトピックは、Google Workspace イベントを受信するエンドポイントとして使用します。
Subscription
リソースで Google Workspace Events API のcreate()
メソッドを呼び出します。- Google Workspace サブスクリプションをテストして、サブスクライブしたイベントが Pub/Sub トピックに受信されるようにします。
- 必要に応じて、アプリがイベントを処理し、必要に応じてアクションを実行できるように、アプリのエンドポイントにイベントをプッシュする方法も設定します。
前提条件
Apps Script
- このガイドの Google Cloud CLI コマンドを使用するには:
- Google Cloud CLI をインストールします。
gcloud
CLI を 初期化するには、次のコードを実行します。
gcloud init
- 課金が有効になっている Google Cloud プロジェクト。Chat を定期購入する場合は、Cloud プロジェクトで Chat API を有効にして、[アプリ名]、[アバターの URL]、[説明] フィールドを構成する必要があります。詳しくは、Google Chat アプリを作成するをご覧ください。
- アプリに構成された OAuth 同意画面でユーザー認証が必要です。同意画面を構成するときに、定期購入の各イベントタイプをサポートするスコープを指定する必要があります。同意画面を構成して必要なスコープを特定するには、スコープを選択するをご覧ください。
- Apps Script プロジェクト:
- Apps Script によって自動的に作成されるデフォルトのプロジェクトではなく、Google Cloud プロジェクトを使用します。
- OAuth 同意画面の構成に追加したスコープは、Apps Script プロジェクトの
appsscript.json
ファイルにも追加する必要があります。次に例を示します。 Google Workspace Events
アドバンスト サービスを有効にします。
"oauthScopes": [ "https://www.googleapis.com/auth/chat.messages.readonly" ]
Python
- Python 3.6 以降
- pip パッケージ管理ツール
- Python 用の最新の Google クライアント ライブラリ。これらのパッケージをインストールまたは更新するには、コマンドライン インターフェースで次のコマンドを実行します。
pip3 install --upgrade google-api-python-client google-auth-oauthlib
- このガイドの Google Cloud CLI コマンドを使用するには:
- Google Cloud CLI をインストールします。
gcloud
CLI を 初期化するには、次のコードを実行します。
gcloud init
- 課金が有効になっている Google Cloud プロジェクト。Chat を定期購入する場合は、Cloud プロジェクトで Chat API を有効にして、[アプリ名]、[アバターの URL]、[説明] フィールドを構成する必要があります。詳しくは、Google Chat アプリを作成するをご覧ください。
- アプリに構成された OAuth 同意画面でユーザー認証が必要です。同意画面を構成するときに、定期購入の各イベントタイプをサポートするスコープを指定する必要があります。同意画面を構成して必要なスコープを特定するには、スコープを選択するをご覧ください。
環境の設定
次のセクションでは、Google Workspace サブスクリプションを作成する前に環境を設定する方法について説明します。
Google Workspace Events API と Google Cloud Pub/Sub API を有効にする
Google API を使用する前に、Google Cloud プロジェクトで API を有効にする必要があります。1 つの Google Cloud プロジェクトで 1 つ以上の API を有効にできます。Google Cloud コンソール
Google Cloud コンソールで、アプリの Google Cloud プロジェクトを開き、Google Workspace Events API と Pub/Sub API を有効にします。
gcloud
作業ディレクトリで Google アカウントにログインします。
gcloud auth login
プロジェクトをアプリの Cloud プロジェクトに設定します。
gcloud config set project PROJECT_ID
PROJECT_ID
は、アプリの Cloud プロジェクトのプロジェクト ID に置き換えます。Google Workspace Events API と Google Cloud Pub/Sub API を有効にします。
gcloud services enable pubsub.googleapis.com workspaceevents.googleapis.com
OAuth クライアント ID 認証情報を作成する
OAuth クライアント ID の作成方法については、アプリケーションの種類を選択してください。
ウェブ アプリケーション
- Google Cloud コンソールで、メニュー > [API とサービス] > [認証情報] に移動します。
- [認証情報を作成] > [OAuth クライアント ID] をクリックします。
- [アプリケーションの種類] > [ウェブ アプリケーション] をクリックします。
- [名前] フィールドに、認証情報の名前を入力します。この名前は Google Cloud コンソールにのみ表示されます。
- アプリに関連する承認済み URI を追加します。
- クライアントサイド アプリ(JavaScript) - [承認済みの JavaScript 生成元] で [URI を追加] をクリックします。次に、ブラウザ リクエストに使用する URI を入力します。これにより、アプリケーションが OAuth 2.0 サーバーに API リクエストを送信できるドメインが識別されます。
- サーバーサイド アプリ(Java、Python など) - [承認済みのリダイレクト URI] で [URI を追加] をクリックします。次に、OAuth 2.0 サーバーがレスポンスを送信するエンドポイント URI を入力します。
- [作成] をクリックします。[OAuth クライアントを作成しました] 画面が表示され、新しいクライアント ID とクライアント シークレットが表示されます。
クライアント ID をメモします。クライアント シークレットはウェブ アプリケーションでは使用されません。
- [OK] をクリックします。新しく作成された認証情報が [OAuth 2.0 クライアント ID] の下に表示されます。
Android
- Google Cloud コンソールで、メニュー > [API とサービス] > [認証情報] に移動します。
- [認証情報を作成] > [OAuth クライアント ID] をクリックします。
- [アプリケーションの種類] > [Android] をクリックします。
- [名前] フィールドに、認証情報の名前を入力します。この名前は Google Cloud コンソールにのみ表示されます。
- [パッケージ名] フィールドに、
AndroidManifest.xml
ファイルのパッケージ名を入力します。 - [SHA-1 証明書のフィンガープリント] フィールドに、生成した SHA-1 証明書のフィンガープリントを入力します。
- [作成] をクリックします。[OAuth クライアントを作成しました] 画面が表示され、新しいクライアント ID が表示されます。
- [OK] をクリックします。新しく作成した認証情報が [OAuth 2.0 クライアント ID] の下に表示されます。
iOS
- Google Cloud コンソールで、メニュー > [API とサービス] > [認証情報] に移動します。
- [認証情報を作成] > [OAuth クライアント ID] をクリックします。
- [アプリケーションの種類] > [iOS] をクリックします。
- [名前] フィールドに、認証情報の名前を入力します。この名前は Google Cloud コンソールにのみ表示されます。
- [バンドル ID] フィールドに、アプリの
Info.plist
ファイルに記載されているバンドル識別子を入力します。 - 省略可: アプリが Apple App Store に掲載されている場合は、App Store ID を入力します。
- 省略可: [チーム ID] フィールドに、Apple によって生成され、チームに割り当てられている、10 文字からなる固有の文字列を入力します。
- [作成] をクリックします。[OAuth クライアントを作成しました] 画面が表示され、新しいクライアント ID とクライアント シークレットが表示されます。
- [OK] をクリックします。新しく作成した認証情報が [OAuth 2.0 クライアント ID] の下に表示されます。
Chrome アプリ
- Google Cloud コンソールで、メニュー > [API とサービス] > [認証情報] に移動します。
- [認証情報を作成] > [OAuth クライアント ID] をクリックします。
- [アプリケーションの種類] > [Chrome アプリ] をクリックします。
- [名前] フィールドに、認証情報の名前を入力します。この名前は Google Cloud コンソールにのみ表示されます。
- [アプリケーション ID] フィールドに、アプリの一意の 32 文字の ID 文字列を入力します。この ID 値は、アプリの Chrome ウェブストアの URL と Chrome ウェブストア デベロッパー ダッシュボードで確認できます。
- [作成] をクリックします。[OAuth クライアントを作成しました] 画面が表示され、新しいクライアント ID とクライアント シークレットが表示されます。
- [OK] をクリックします。新しく作成した認証情報が [OAuth 2.0 クライアント ID] の下に表示されます。
デスクトップ アプリ
- Google Cloud コンソールで、メニュー > [API とサービス] > [認証情報] に移動します。
- [認証情報を作成] > [OAuth クライアント ID] をクリックします。
- [アプリケーションの種類] > [デスクトップ アプリ] をクリックします。
- [名前] フィールドに、認証情報の名前を入力します。この名前は Google Cloud コンソールにのみ表示されます。
- [作成] をクリックします。[OAuth クライアントを作成しました] 画面が表示され、新しいクライアント ID とクライアント シークレットが表示されます。
- [OK] をクリックします。新しく作成された認証情報が [OAuth 2.0 クライアント ID] の下に表示されます。
テレビと入力が限られたデバイス
- Google Cloud コンソールで、メニュー > [API とサービス] > [認証情報] に移動します。
- [認証情報を作成] > [OAuth クライアント ID] をクリックします。
- [アプリケーションの種類] > [テレビと限定入力デバイス] をクリックします。
- [名前] フィールドに、認証情報の名前を入力します。この名前は Google Cloud コンソールにのみ表示されます。
- [作成] をクリックします。[OAuth クライアントを作成しました] 画面が表示され、新しいクライアント ID とクライアント シークレットが表示されます。
- [OK] をクリックします。新しく作成した認証情報が [OAuth 2.0 クライアント ID] の下に表示されます。
ユニバーサル Windows プラットフォーム(UWP)
- Google Cloud コンソールで、メニュー > [API とサービス] > [認証情報] に移動します。
- [認証情報を作成] > [OAuth クライアント ID] をクリックします。
- [アプリケーションの種類] > [ユニバーサル Windows プラットフォーム(UWP)] をクリックします。
- [名前] フィールドに、認証情報の名前を入力します。この名前は Google Cloud コンソールにのみ表示されます。
- [ストア ID] フィールドに、アプリの一意の 12 文字の Microsoft ストア ID 値を入力します。この ID は、アプリの Microsoft Store の URL と パートナー センターで確認できます。
- [作成] をクリックします。[OAuth クライアントを作成しました] 画面が表示され、新しいクライアント ID とクライアント シークレットが表示されます。
- [OK] をクリックします。新しく作成した認証情報が [OAuth 2.0 クライアント ID] の下に表示されます。
クライアント シークレット JSON ファイルをダウンロードする
クライアント シークレット ファイルは、認証情報を提供する際にアプリが参照できる OAuth クライアント ID 認証情報の JSON 表現です。
Google Cloud コンソールで、メニュー > [API とサービス] > [認証情報] に移動します。
[OAuth 2.0 クライアント ID] で、作成したクライアント ID をクリックします。
[JSON をダウンロード] をクリックします。
ファイルを
client_secrets.json
として保存します。
Pub/Sub トピックを作成してサブスクライブする
このセクションでは、Pub/Sub トピックとそのトピックのサブスクリプションを作成します。Pub/Sub トピックは、Google Workspace サブスクリプションがイベントを受信する通知エンドポイントとして機能します。
Pub/Sub トピックの作成と管理の詳細については、Pub/Sub のドキュメントをご覧ください。
Pub/Sub トピックを作成してサブスクライブする手順は次のとおりです。
Google Cloud コンソール
Google Cloud コンソールで、[Pub/Sub] ページに移動します。
アプリの Cloud プロジェクトが選択されていることを確認します。
[
トピックを作成] をクリックして、次の操作を行います。- トピックの名前を入力します(例:
workspace-events-topic
)。 - [デフォルトのサブスクリプションを追加する] を選択したままにします。Pub/Sub は、このデフォルト サブスクリプションの名前をトピックの名前に似たものにします(
workspace-events-topic-sub
など)。 - 省略可: トピックの追加のプロパティを更新または構成します。
- トピックの名前を入力します(例:
[作成] をクリックします。トピックの完全な名前の形式は
projects/PROJECT_ID/topics/TOPIC_ID
です。このフルネームは後で使用します。トピックに Pub/Sub メッセージをパブリッシュする権限を付与します。
- トピックのページでサイドパネルに移動し、[権限] タブを開きます。
- [プリンシパルを追加] をクリックします。
- [プリンシパルの追加] フィールドに、サブスクリプションにイベントを配信する Google Workspace アプリケーションのサービス アカウントを追加します。
- Chat イベントの場合は
chat-api-push@system.gserviceaccount.com
です。 - Meet イベントの場合は
meet-api-event-push@system.gserviceaccount.com
です。
- Chat イベントの場合は
- [ロールを割り当てる] メニューで、
Pub/Sub Publisher
を選択します。 - [保存] をクリックします。トピックの権限が更新されるまで数分かかることがあります。
gcloud
Cloud プロジェクトで、次のコマンドを実行してトピックを作成します。
gcloud pubsub topics create TOPIC_ID
TOPIC_ID
は、トピックの一意の ID(workspace-events-topic
など)に置き換えます。出力には、
projects/PROJECT_ID/topics/TOPIC_ID
という形式の完全なトピック名が表示されます。名前をメモし、PROJECT_ID の値がアプリの Cloud プロジェクト ID であることを確認します。トピック名は、次のステップで使用し、後で Google Workspace サブスクリプションを作成するために使用します。トピックにメッセージをパブリッシュするアクセス権を付与します。
gcloud pubsub topics add-iam-policy-binding TOPIC_NAME --member='serviceAccount:GOOGLE_WORKSPACE_APPLICATION' --role='roles/pubsub.publisher'
次のように置き換えます。
TOPIC_NAME
: トピックの完全な名前。前の手順の出力です。形式はprojects/PROJECT_ID/topics/TOPIC_ID
です。GOOGLE_WORKSPACE_APPLICATION
: サブスクリプションにイベントを配信する必要がある Google Workspace アプリケーション。- Chat からイベントを受信するには、
chat-api-push@system.gserviceaccount.com
を使用します。 - Meet からイベントを受信するには、
meet-api-event-push@system.gserviceaccount.com
を使用します。
- Chat からイベントを受信するには、
トピックの権限が更新されるまで、数分かかることがあります。
トピックに Pub/Sub サブスクリプションを作成します。
gcloud pubsub subscriptions create SUBSCRIPTION_NAME --topic=TOPIC_NAME
次のように置き換えます。
SUBSCRIPTION_NAME
: サブスクリプションの名前(workspace-events-subscription
など)。TOPIC_NAME
: 前の手順で作成したトピックの名前。
Google Workspace リソースをサブスクライブする
このセクションでは、イベントをモニタリングする Google Workspace リソースをサブスクライブします。
ターゲット リソースを選択して識別する
Google Workspace サブスクリプションで、ターゲット リソースは、イベントをモニタリングする Google Workspace リソースです。ターゲット リソースは、サブスクリプションの targetResource
フィールドに、完全なリソース名を使用してフォーマットされます。たとえば、Google Chat スペース(spaces/AAAABBBBBBB
)をモニタリングするサブスクリプションの場合、targetResource
の値は //chat.googleapis.com/spaces/AAAABBBBBBB
です。
サブスクリプションを作成する前に、次のセクションで、ターゲット リソースを特定してフォーマットする方法を確認してください。
Chat のターゲット リソースを特定する
ターゲット リソース | 形式 | 制限事項 |
---|---|---|
スペース |
ここで、SPACE は Chat API |
サブスクリプションを承認する Chat ユーザーは、Google Workspace アカウントまたは Google アカウントを使用してスペースのメンバーである必要があります。 |
ユーザーのすべてのスペース |
|
定期購入では、ユーザーが Google Workspace または Google アカウントを通じてメンバーになっているスペースのイベントのみが受信されます。 |
ユーザー |
ここで、USER は Chat API |
サブスクリプションは、サブスクリプションを承認したユーザーに関するイベントのみを受信します。ユーザーは、他のユーザーに代わってサブスクリプションを承認することはできません。 |
Meet のターゲット リソースを特定する
ターゲット リソース | 形式 | 制限事項(該当する場合) |
---|---|---|
会議スペース | //meet.googleapis.com/spaces/SPACE
ここで、SPACE は Meet REST API |
|
ユーザー | //cloudidentity.googleapis.com/users/USER
ここで、USER は Meet REST API |
サブスクリプションは、ユーザーが次のいずれかである会議スペースに関するイベントを受信します。
|
Google Workspace サブスクリプションを作成する
サブスクリプションを作成するには、Google Workspace Events API の subscriptions.create()
メソッドを使用して Subscription
リソースを作成します。次のフィールドを指定します。
targetResource
: 前のセクションで特定した Google Workspace。完全なリソース名を使用してフォーマットされています。eventTypes
: リソースに関する 1 つ以上のイベントタイプの配列。たとえば、アプリが Chat スペースに投稿された新しいメッセージのみを把握する必要がある場合は、作成されたメッセージに関するイベントにサブスクライブするだけで済みます。notificationEndpoint
: Google Workspace サブスクリプションがイベントを配信する通知エンドポイント。前のセクションで作成した Pub/Sub トピックを使用します。payloadOptions
: イベント ペイロードに含めるリソースデータの量を指定するオプション。この構成は、サブスクリプションの有効期限に影響します。詳細については、イベントデータをご覧ください。
Google Workspace サブスクリプションを作成するには:
Apps Script
Apps Script プロジェクトで、
createSubscription
という名前の新しいスクリプト ファイルを作成し、次のコードを追加します。function createSubscription() { // The Google Workspace resource to monitor for events. const targetResource = 'TARGET_RESOURCE'; // The types of events to receive. const eventTypes = [EVENT_TYPES]; // The endpoint to deliver events to, such as a Google Cloud Pub/Sub topic. const pubsubTopic = 'TOPIC_NAME'; // Whether to include resource data or not. const resourceData = RESOURCE_DATA; // Call the Workspace Events API using the advanced service. const response = WorkspaceEvents.Subscriptions.create({ targetResource: targetResource, eventTypes: eventTypes, notificationEndpoint: { pubsubTopic: pubsubTopic, }, payloadOptions: { includeResource: resourceData } }); console.log(response); }
次のように置き換えます。
TARGET_RESOURCE
: サブスクライブする Google Workspace リソース。完全なリソース名の形式で指定します。たとえば、スペース ID がAAAABBBB
の Google Chat スペースを定期購入するには、//chat.googleapis.com/spaces/AAAABBBB
を使用します。EVENT_TYPES
: ターゲット リソースでサブスクライブする 1 つ以上のイベントタイプ。'google.workspace.chat.message.v1.created'
などの文字列の配列としてフォーマットします。TOPIC_NAME
: Cloud プロジェクトで作成した Pub/Sub トピックの完全な名前。形式はprojects/PROJECT_ID/topics/TOPIC_ID
です。RESOURCE_DATA
: サブスクリプションにペイロードにリソースデータが含まれているかどうかを指定するブール値。True
: すべてのリソースデータが含まれます。含めるフィールドを制限するには、fieldMask
フィールドを追加し、変更されたリソースのフィールドを 1 つ以上指定します。リソースデータの追加は、Chat リソースのサブスクリプションのみがサポートしています。False
: リソースデータは除外されます。
Google Workspace サブスクリプションを作成するには、Apps Script プロジェクトで関数
createSubscription
を実行します。
Python
作業ディレクトリに
create_subscription.py
という名前のファイルを作成し、次のコードを追加します。"""Create 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('client_secrets.json', SCOPES) CREDENTIALS = flow.run_local_server() # The Google Workspace resource to monitor for events. TARGET_RESOURCE = 'TARGET_RESOURCE' # The types of events to receive. EVENT_TYPES = [EVENT_TYPES] # The endpoint to deliver events to, such as a Google Cloud Pub/Sub topic. TOPIC = 'TOPIC_NAME' # Call the Workspace Events API using the service endpoint. service = build( 'workspaceevents', 'v1', credentials=CREDENTIALS, ) BODY = { 'target_resource': TARGET_RESOURCE, 'event_types': EVENT_TYPES, 'notification_endpoint': {'pubsub_topic': TOPIC}, 'payload_options': {'include_resource': RESOURCE_DATA}, } response = service.subscriptions().create(body=BODY).execute() print(response)
次のように置き換えます。
SCOPES
: サブスクリプションの各イベントタイプをサポートする 1 つ以上の OAuth スコープ。文字列の配列としてフォーマットされます。複数のスコープを一覧表示するには、カンマで区切ります。例:'https://www.googleapis.com/auth/chat.spaces.readonly', 'https://www.googleapis.com/auth/chat.memberships.readonly'
TARGET_RESOURCE
: 定期購入する Google Workspace リソース。完全なリソース名の形式で指定します。たとえば、スペース ID がAAAABBBB
の Google Chat スペースを定期購入するには、//chat.googleapis.com/spaces/AAAABBBB
を使用します。EVENT_TYPES
: ターゲット リソースでサブスクライブする 1 つ以上のイベントタイプ。'google.workspace.chat.message.v1.created'
などの文字列の配列としてフォーマットします。TOPIC_NAME
: Cloud プロジェクトで作成した Pub/Sub トピックの完全な名前。形式はprojects/PROJECT_ID/topics/TOPIC_ID
です。RESOURCE_DATA
: サブスクリプションにペイロードにリソースデータが含まれているかどうかを指定するブール値。True
: すべてのリソースデータが含まれます。含めるフィールドを制限するには、fieldMask
フィールドを追加し、変更されたリソースのフィールドを少なくとも 1 つ指定します。リソースデータの追加は、Chat リソースのサブスクリプションのみがサポートしています。False
: リソースデータは除外されます。
Google Workspace サブスクリプションを作成するには、ターミナルで次のコマンドを実行します。
python3 create_subscription.py
Google Workspace Events API は、作成した Subscription
リソースのインスタンスが含まれる、完了した長時間実行オペレーションを返します。
Google Workspace サブスクリプションをテストする
Google Workspace イベントを受信していることを確認するには、イベントをトリガーして、Pub/Sub サブスクリプションにメッセージを pull します。
Google Workspace サブスクリプションをテストするには:
Google Cloud コンソール
Google Workspace サブスクリプションのターゲット リソースで 1 つ以上のタイプのイベントをトリガーします。たとえば、Chat スペースで新しいメッセージを定期購読している場合は、スペースにメッセージを投稿します。
Google Cloud コンソールで、[Pub/Sub] ページに移動します。
アプリの Cloud プロジェクトが選択されていることを確認します。
[Pub/Sub] メニューで [サブスクリプション] をクリックします。
表で、トピックの Pub/Sub サブスクリプションを見つけて、サブスクリプション名をクリックします。
[メッセージ] タブをクリックします。
[Pull] をクリックします。イベントが Pub/Sub メッセージを生成するまでに数分かかることがあります。
gcloud
Google Workspace サブスクリプションのターゲット リソースで 1 つ以上のタイプのイベントをトリガーします。たとえば、Chat スペースで新しいメッセージを定期購読している場合は、そのスペースにメッセージを投稿します。
次のコマンドを実行します。
gcloud pubsub subscriptions pull PUBSUB_SUBSCRIPTION_NAME --format=json --limit=MESSAGE_COUNT --auto-ack
次のように置き換えます。
PUBSUB_SUBSCRIPTION_NAME
: Pub/Sub サブスクリプションの完全な名前(projects/SUBSCRIPTION_ID/subscriptions/SUBSCRIPTION_ID
形式)。MESSAGE_COUNT
: pull する Pub/Sub メッセージの最大数。
イベントが Pub/Sub メッセージを生成するまでに数分かかることがあります。
トリガーした Google Workspace イベントごとに、イベントを含む Pub/Sub サブスクリプションにメッセージが配信されます。詳細については、Google Cloud Pub/Sub メッセージとしてイベントを受信するをご覧ください。
アプリがイベントを受信する方法を設定します
作成した Pub/Sub サブスクリプションは pull ベースです。Pub/Sub サブスクリプションをテストしたら、配信タイプを更新して、アプリがイベントを受信する方法を変更できます。たとえば、Pub/Sub サブスクリプションを push 配信タイプに構成して、アプリがアプリ エンドポイントに直接イベントを受信できるようにします。
Pub/Sub サブスクリプションの構成については、Pub/Sub のドキュメントをご覧ください。