このページでは、エラーの解決またはトラブルシューティングを行い、subscriptions.reactivate()
メソッドを呼び出して、停止中の Google Workspace サブスクリプションを再度有効にする方法について説明します。
エラーによってサブスクリプションでイベントを受信できないと、Google Workspace サブスクリプションは停止されます。たとえば、サブスクリプションは、ターゲット リソースまたは通知エンドポイントが見つからない場合に一時停止されます。サブスクリプションのエラーを解決したら、サブスクリプションを再び有効にすると、イベントの受信を再開できます。
停止中のサブスクリプションについては、次の方法で確認できます。
- アプリが停止に関するライフサイクル イベントを受信します。エンドポイントのエラーが原因でサブスクリプションが停止された場合、ライフサイクル イベントを受信しない可能性があります。
subscriptions.get()
メソッドまたはsubscriptions.list()
メソッドを使用して、サブスクリプションのstate
フィールドがSUSPENDED
に設定されているかどうかを確認します。- 通知エンドポイントへの配信エラーが通知されます。Google Cloud Pub/Sub トピックへの配信エラーをモニタリングする方法については、メッセージ エラーの処理をご覧ください。
定期購入を再開しても、元の有効期限は維持されます。定期購入の有効期限を延長するには、定期購入を更新または更新するをご覧ください。
Apps Script
- Google Workspace サブスクリプション。作成するには、サブスクリプションを作成するをご覧ください。
定期購入のすべてのイベントタイプをサポートするスコープを 1 つ以上使用してユーザー認証が必要です。
- Apps Script プロジェクト:
- Apps Script によって自動的に作成されるデフォルトのプロジェクトではなく、Google Cloud プロジェクトを使用します。
- OAuth 同意画面を構成するために追加したスコープについては、Apps Script プロジェクトの
appsscript.json
ファイルにスコープを追加する必要があります。次に例を示します。
"oauthScopes": [ "https://www.googleapis.com/auth/chat.messages.readonly" ]
Google Workspace Events
拡張サービスを有効にします。
Python
- Python 3.6 以降
- pip パッケージ管理ツール
- Python 用の最新の Google クライアント ライブラリ。これらをインストールまたは更新するには、コマンドライン インターフェースで次のコマンドを実行します。
pip3 install --upgrade google-api-python-client google-auth-oauthlib
- Google Workspace サブスクリプション。作成するには、サブスクリプションを作成するをご覧ください。
定期購入のすべてのイベントタイプをサポートするスコープを 1 つ以上使用してユーザー認証が必要です。
エラーの特定と解決
定期購入のエラーを特定するには、定期購入の suspensionReason
フィールドを確認します。このフィールドは、停止に関するライフサイクル イベントを受け取ったとき、または subscriptions.get()
メソッドを使用してサブスクリプションのすべてのフィールドを確認するときに確認できます。
次の表に、サブスクリプションで発生する可能性のあるエラーと、可能であればエラーの解決方法を示します。エラーを解決できない場合は、サブスクリプションを削除するか、有効期限が切れるまで待ちます。Google Workspace Events API は 期限切れのサブスクリプションを自動的に削除します
エラー | 説明 | 解決方法 |
---|---|---|
|
認可を行ったユーザーが、定期購入に必要な 1 つ以上の OAuth スコープの付与を取り消しました。 | 別のアクセス トークンを取得します。詳しくは、 Google 承認サーバーからのアクセス トークンの取得をご覧ください。 |
|
サブスクリプションの対象リソースが削除された。 | リソースが復元されたら、reactivate() メソッドを呼び出します。それ以外の場合は、何もする必要はありません。元のターゲット リソースがないと定期購入を再度有効にすることはできません。 |
|
認可ユーザーは、定期購入のリソースにアクセスできなくなります。 | 対応は不要です。サブスクリプションを承認したユーザーはターゲット リソースにアクセスできないため、サブスクリプションを再度有効にすることはできません。 |
|
Google Workspace アプリケーションには、通知エンドポイントにイベントを配信するためのアクセス権がありません。 | イベントを配信する Google Workspace アプリケーションのサービス アカウントへのアクセス権を付与します。 Google Chat イベントの場合、サービス アカウントは chat-api-push@system.gserviceaccount.com です。Google Meet イベントの場合、サービス アカウントは meet-api-event-push@system.gserviceaccount.com です。Pub/Sub トピックの場合は、Pub/Sub パブリッシャーのロール(サービス アカウントに roles/pubsub.publisher)
)を付与します。 |
|
通知エンドポイントが存在しないか、見つかりません。 | エンドポイントが引き続きアクティブで機能していることを確認します。Pub/Sub トピックのトラブルシューティングについては、トラブルシューティングのドキュメントをご覧ください。 |
|
割り当てが不十分であるか、レート制限に達したため、通知エンドポイントがイベントを受信できませんでした。 | 割り当ての増加をリクエストします。 |
定期購入を再度有効にする
サブスクリプションを停止したエラーを解決したら、reactivate()
メソッドを使用して、サブスクリプションがイベントを再度受信できるようにします。このメソッドは、すべてのエラーが解決されたことを確認し、サブスクリプションの state
フィールドを SUSPENDED
から ACTIVE
に変更します。
Google Workspace サブスクリプションを再度有効にするには:
Apps Script
Apps Script プロジェクトで、
reactivateSubscription
という名前の新しいスクリプト ファイルを作成し、次のコードを追加します。function reactivateSubscription() { // The name of the subscription to reactivate. const name = 'subscriptions/SUBSCRIPTION_ID'; // Call the Workspace Events API using the advanced service. const response = WorkspaceEvents.Subscriptions.reactivate({}, name); console.log(response); }
次のように置き換えます。
Google Workspace サブスクリプションを再度有効にするには、Apps Script プロジェクトで
reactivateSubscription
関数を実行します。
Python
作業ディレクトリに
reactivate_subscription.py
という名前のファイルを作成し、次のコードを追加します。"""Reactivate 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() # Call the Workspace Events API using the service endpoint. service = build( 'workspaceevents', 'v1', credentials=CREDENTIALS, ) NAME = 'subscriptions/SUBSCRIPTION_ID' response = service.subscriptions().reactivate(name=NAME).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 を取得するには、次のいずれかを使用します。
作業ディレクトリで、OAuth クライアント ID の認証情報を保存し、ファイルに
client_secrets.json
という名前を付けます。コードサンプルは、この JSON ファイルを使用して Google Workspace で認証を行い、ユーザー認証情報を取得します。手順については、OAuth クライアント ID の認証情報を作成するをご覧ください。Google Workspace サブスクリプションを再度有効にするには、ターミナルで次のコマンドを実行します。
python3 reactivate_subscription.py
Subscription
リソースのインスタンスを含む長時間実行オペレーションを返します。リクエストが失敗した場合は、次のセクションを参照してその他のエラーのトラブルシューティングを行ってください。
複数のエラーのトラブルシューティング
サブスクリプションを停止したエラーを解決して reactivate()
メソッドが失敗した場合は、サブスクリプションの停止後に別のエラーが発生した可能性があります。
他のエラーを特定するには、失敗したリクエストの出力を確認します。出力には、まだ存在するエラーが含まれます。
サブスクリプションに複数のエラーがある場合、suspensionReason
フィールドの値にはサブスクリプションを停止した元のエラーが常に使用されます。