このページでは、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 トピックが登録したイベントを受信することを確認します。
- 必要に応じて、アプリのイベントをエンドポイントに push する方法を構成します。これにより、アプリはイベントを処理し、必要に応じてアクションを実行できます。
前提条件
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 コンソールで、メニュー > > [クライアント] に移動します。
- [Create Client] をクリックします。
- [アプリケーションの種類] > [ウェブ アプリケーション] をクリックします。
- [名前] フィールドに、認証情報の名前を入力します。この名前は Google Cloud コンソールにのみ表示されます。
- アプリに関連する承認済み URI を追加します。
- クライアントサイド アプリ(JavaScript) - [承認済みの JavaScript 生成元] で [URI を追加] をクリックします。次に、ブラウザ リクエストに使用する URI を入力します。これは、アプリケーションが OAuth 2.0 サーバーに API リクエストを送信できるドメインを識別します。
- サーバーサイド アプリ(Java、Python など) - [承認済みのリダイレクト URI] で、[URI を追加] をクリックします。次に、OAuth 2.0 サーバーがレスポンスを送信するエンドポイント URI を入力します。
- [Create] をクリックします。
新しく作成した認証情報が [OAuth 2.0 クライアント ID] に表示されます。
クライアント ID をメモします。クライアント シークレットはウェブ アプリケーションでは使用されません。
Android
- Google Cloud コンソールで、メニュー > > [クライアント] に移動します。
- [Create Client] をクリックします。
- [アプリケーションの種類] > [Android] をクリックします。
- [名前] フィールドに、認証情報の名前を入力します。この名前は Google Cloud コンソールにのみ表示されます。
- [パッケージ名] フィールドに、
AndroidManifest.xml
ファイルのパッケージ名を入力します。 - [SHA-1 証明書のフィンガープリント] フィールドに、生成した SHA-1 証明書のフィンガープリントを入力します。
- [Create] をクリックします。
新しく作成した認証情報は、[OAuth 2.0 クライアント ID] に表示されます。
iOS
- Google Cloud コンソールで、メニュー > > [クライアント] に移動します。
- [Create Client] をクリックします。
- [Application type] > [iOS] をクリックします。
- [名前] フィールドに、認証情報の名前を入力します。この名前は Google Cloud コンソールにのみ表示されます。
- [バンドル ID] フィールドに、アプリの
Info.plist
ファイルに記載されているバンドル識別子を入力します。 - 省略可: アプリが Apple App Store に掲載されている場合は、App Store ID を入力します。
- 省略可: [チーム ID] フィールドに、Apple によって生成され、チームに割り当てられている、10 文字からなる固有の文字列を入力します。
- [Create] をクリックします。
新しく作成した認証情報は、[OAuth 2.0 クライアント ID] に表示されます。
Chrome アプリ
- Google Cloud コンソールで、メニュー > > [クライアント] に移動します。
- [Create Client] をクリックします。
- [アプリケーション タイプ] > [Chrome 拡張機能] をクリックします。
- [名前] フィールドに、認証情報の名前を入力します。この名前は Google Cloud コンソールにのみ表示されます。
- [Item ID] フィールドに、アプリの一意の 32 文字の ID 文字列を入力します。この ID 値は、アプリの Chrome ウェブストアの URL と Chrome ウェブストア デベロッパー ダッシュボードで確認できます。
- [Create] をクリックします。
新しく作成した認証情報は、[OAuth 2.0 クライアント ID] に表示されます。
デスクトップ アプリ
- Google Cloud コンソールで、メニュー > > [クライアント] に移動します。
- [Create Client] をクリックします。
- [アプリケーション タイプ] > [デスクトップ アプリ] をクリックします。
- [名前] フィールドに、認証情報の名前を入力します。この名前は Google Cloud コンソールにのみ表示されます。
- [Create] をクリックします。
新しく作成した認証情報は、[OAuth 2.0 クライアント ID] に表示されます。
テレビと入力が限られたデバイス
- Google Cloud コンソールで、メニュー > > [クライアント] に移動します。
- [Create Client] をクリックします。
- [Application type] > [TVs & Limited Input devices] をクリックします。
- [名前] フィールドに、認証情報の名前を入力します。この名前は Google Cloud コンソールにのみ表示されます。
- [Create] をクリックします。
新しく作成した認証情報は、[OAuth 2.0 クライアント ID] に表示されます。
ユニバーサル Windows プラットフォーム(UWP)
- Google Cloud コンソールで、メニュー > > [クライアント] に移動します。
- [Create Client] をクリックします。
- [アプリケーションの種類] > [ユニバーサル Windows プラットフォーム(UWP)] をクリックします。
- [名前] フィールドに、認証情報の名前を入力します。この名前は Google Cloud コンソールにのみ表示されます。
- [ストア ID] フィールドに、アプリの一意の 12 文字の Microsoft Store ID 値を入力します。この ID は、アプリの Microsoft Store URL と パートナー センターで確認できます。
- [Create] をクリックします。
新しく作成した認証情報は、[OAuth 2.0 クライアント ID] に表示されます。
クライアント シークレット JSON ファイルをダウンロードする
クライアント シークレット ファイルは、アプリが認証情報を提供するときに参照できる OAuth クライアント ID 認証情報の JSON 表現です。
Google Cloud コンソールで、メニュー > [API とサービス] > [認証情報] に移動します。
[OAuth 2.0 クライアント ID] で、作成したクライアント ID をクリックします。
[JSON をダウンロード] をクリックします。
ファイルを
credentials.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
。 - デベロッパー プレビュー:: ドライブ イベントの場合、
drive-api-event-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
を使用します。 - デベロッパー プレビュー:: ドライブからイベントを受信するには、
drive-api-event-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 の |
サブスクリプションは、サブスクリプションを承認したユーザーに関するイベントのみを受信します。ユーザーは他のユーザーに代わってサブスクリプションを承認することはできません。 |
ドライブのターゲット リソースを特定する
ターゲット リソース | 形式 | 制限事項(該当する場合) |
---|---|---|
ファイル | //googleapis.com/drive/v3/files/FILE
ここで、FILE は Drive API |
サブスクリプションを承認するユーザーは、サブスクライブするイベントに関連するサブスクリプション内のファイルに対する権限を持っている必要があります。 |
共有ドライブ | //googleapis.com/drive/v3/drives/DRIVE
ここで、DRIVE は Drive API |
サブスクリプションは、ユーザーが Google Workspace アカウントまたは Google アカウントを通じてメンバーになっている共有ドライブ内のアイテムのイベントのみを受信します。 |
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 リソース。完全なリソース名としてフォーマットされます。たとえば、スペース IDAAAABBBB
の 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('credentials.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 リソース。完全なリソース名としてフォーマットされます。たとえば、スペース IDAAAABBBB
の 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/PROJECT_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 のドキュメントをご覧ください。