Google Workspace アドオン デベロッパーは、変更をテストしたり、複雑な問題をトラブルシューティングしたりするために、コードをデバッグする必要がある場合があります。Google Workspace アドオンのデバッグ方法は、アプリのアーキテクチャ、アプリの機能、アプリのデプロイ方法、デベロッパーの好みに応じてさまざまな方法があります。
このページでは、ローカル開発環境のテストに使用できる統合イングレステーション プラットフォームである ngrok を使用して、HTTP Google Workspace アドオンをデバッグする方法について説明します。このガイドでは、ローカル環境でコードの変更をテストし、リモート環境で問題をトラブルシューティングします。
ローカル開発環境からデバッグする
このセクションでは、ローカル環境で実行される Google Workspace アドオンを操作します。
前提条件
Node.js
- ローカル環境に
nodeとnpmインストールされている こと。 ローカル環境に
nodemonインストールされていること。オートチャージに使用されます。npm install -g nodemonGoogle Cloud プロジェクト。クイックスタート ガイドの 前提条件と 環境を設定する の手順に沿って操作してください。
ローカル環境でデバッグする Google Workspace アドオンのコード。このガイドでは、説明のために GitHub リポジトリ
googleworkspace/add-ons-samplesのコード例3p-resourcesのプレビュー リンク機能を使用します。デバッグ可能な IDE がローカル環境に設定されていること。このガイドでは、説明のために
Visual Studio CodeIDE とそのデフォルトの デバッグ機能を使用します。ngrokアカウント。ローカル環境に
gcloud最新バージョンがインストールされ 、初期化されていること。
Python
- ローカル環境に
python3インストールされている こと。 - ローカル環境に
pipとvirtualenvの最新バージョンがインストールされていること。これらは、それぞれ Python パッケージと仮想環境の管理に使用されます。 - Google Cloud プロジェクト。クイックスタート ガイドの 前提条件と 環境を設定する の手順に沿って操作してください 。
- ローカル環境でデバッグする Google Workspace アドオンのコード。このガイドでは、説明のために GitHub リポジトリ
googleworkspace/add-ons-samplesのコード例3p-resourcesのプレビュー リンク機能を使用します。 - デバッグ可能な IDE がローカル環境に設定されていること。このガイドでは、説明のために
Visual Studio CodeIDE とそのデフォルトの デバッグ機能を使用します。 ngrokアカウント。- ローカル環境に
gcloud最新バージョンがインストールされ 、初期化されていること。
Java
- ローカル環境に
Java SE 11's JDKがインストールされていること。 - ローカル環境に
Apache Mavenがインストールされていること。Java プロジェクトの管理に使用されます。 - Google Cloud プロジェクト。クイックスタート ガイドの 前提条件と 環境を設定する の手順に沿って操作してください 。
- ローカル環境でデバッグする Google Workspace アドオンのコード。このガイドでは、説明のために GitHub リポジトリ
googleworkspace/add-ons-samplesのコード例3p-resourcesのプレビュー リンク機能を使用します。 - デバッグ可能な IDE がローカル環境に設定されていること。このガイドでは、説明のために
Visual Studio CodeIDE とそのデフォルトの デバッグ機能を使用します。 ngrokアカウント。- ローカル環境に
gcloud最新バージョンがインストールされ 、初期化されていること。
localhost サービスを一般公開する
Google Workspace アドオンがアクセスできるように、ローカル環境をインターネットに接続する必要があります。ngrok アプリケーションは、パブリック URL への HTTP リクエストをローカル環境にリダイレクトするために使用されます。
- ローカル環境のブラウザで、
ngrokアカウントにログインします。 - アプリケーションをインストールし、ローカル環境に
authtokenを設定します。 - 静的ドメインを
ngrokアカウントに作成します。このガイドの手順ではNGROK_STATIC_DOMAINとして参照されます。
アドオン デプロイを作成してインストールする
すべての HTTP リクエストを静的ドメインに送信するように Google Workspace アドオンを構成します。デプロイ ファイルは次のようになります。
{ "oauthScopes": [ "https://www.googleapis.com/auth/workspace.linkpreview", "https://www.googleapis.com/auth/workspace.linkcreate" ], "addOns": { "common": { "name": "Manage support cases", "logoUrl": "https://developers.google.com/workspace/add-ons/images/support-icon.png", "layoutProperties": { "primaryColor": "#dd4b39" } }, "docs": { "linkPreviewTriggers": [ { "runFunction": "NGROK_STATIC_DOMAIN", "patterns": [ { "hostPattern": "example.com", "pathPrefix": "support/cases" }, { "hostPattern": "*.example.com", "pathPrefix": "cases" }, { "hostPattern": "cases.example.com" } ], "labelText": "Support case", "localizedLabelText": { "es": "Caso de soporte" }, "logoUrl": "https://developers.google.com/workspace/add-ons/images/support-icon.png" } ], "createActionTriggers": [ { "id": "createCase", "labelText": "Create support case", "localizedLabelText": { "es": "Crear caso de soporte" }, "runFunction": "$URL2", "logoUrl": "https://developers.google.com/workspace/add-ons/images/support-icon.png" } ] }, "httpOptions": { "granularOauthPermissionSupport": "OPT_IN" } } }NGROK_STATIC_DOMAINは、ngrokアカウントの静的ドメインに置き換えます。使用する Google Cloud プロジェクトを設定します。
gcloud config set project PROJECT_IDアプリケーションのデフォルト認証情報として使用する新しいユーザー認証情報を取得します。
gcloud auth application-default loginデプロイを作成します。
gcloud workspace-add-ons deployments create manageSupportCases \ --deployment-file=DEPLOYMENT_FILE_PATHDEPLOYMENT_FILE_PATHは、デプロイ ファイルのパスに置き換えます。デプロイをインストールします。
gcloud workspace-add-ons deployments install manageSupportCases図 2.Google Workspace アドオンは、すべての HTTP リクエストを静的ドメインに送信します。`ngrok` 公開サービスは、 Google Workspace アドオンとローカルで実行されるアプリケーション コードのブリッジとして機能します。
Google Workspace アドオンをテストする
Google Workspace アドオンをローカルでデプロイ、テスト、デバッグ、自動再読み込みできます。
Node.js
ローカル環境にインストールされている
Visual Studio CodeIDE で、次の操作を行います。- 新しいウィンドウで、
add-ons-samples/node/3p-resourcesフォルダを開きます。 package.jsonファイルに 1 つの依存関係と 2 つのスクリプトを追加して、ローカル実行と自動再読み込みデバッグ用にアプリケーションを構成します。{ ... "dependencies": { ... "@google-cloud/functions-framework": "^3.3.0" }, "scripts": { ... "start": "npx functions-framework --target=createLinkPreview --port=9000", "debug-watch": "nodemon --watch ./ --exec npm start" } ... }ルート ディレクトリから、アプリケーションをインストールします。
npm installルート ディレクトリに
.vscode/launch.jsonファイルを作成して、debug-watchスクリプトをトリガーするDebug Watchという名前の起動を作成して構成します。{ "version": "0.2.0", "configurations": [{ "type": "node", "request": "launch", "name": "Debug Watch", "cwd": "${workspaceRoot}", "runtimeExecutable": "npm", "runtimeArgs": ["run-script", "debug-watch"] }] }index.jsファイルで HTTP リクエスト処理を一時停止するブレークポイントを追加し、先ほど追加したDebug Watch構成で 実行とデバッグを開始します。これで、アプリケーションが実行され、ポート9000で HTTP リクエストをリッスンします。
図 3.アプリケーションが実行され、ポート 9000で HTTP リクエストをリッスンしています。
- 新しいウィンドウで、
ローカル環境で
ngrokアプリケーションを起動します。ngrok http --domain=NGROK_STATIC_DOMAIN 9000NGROK_STATIC_DOMAINは、ngrokアカウントの静的ドメインに置き換えます。これで、すべてのリクエストがローカル環境とアプリケーションで使用されるポートにリダイレクトされます。
図 4. ngrokサーバーが実行され、リダイレクトされるターミナル。ngrokアプリケーションによって、localhost にウェブ インターフェースも起動します。ブラウザで開いて、すべてのアクティビティをモニタリングできます。
図 5. ngrokアプリケーションでホストされているウェブ インターフェースに HTTP リクエストが表示されない。テスター アカウントを使用して新しい Google ドキュメントでケース URL をプレビューして、Google Workspace アドオンをテストします。
Google ドキュメントを作成します。
次のリンクを入力して
enterキーを押します。https://example.com/support/case/?name=Name1&description=Description1&priority=P1リンクをクリックします。
ローカル環境の
Visual Studio Codeで、設定したブレークポイントで実行が一時停止していることを確認できます。
図 6.設定したブレークポイントで実行が一時停止しています。 Google Workspace アドオンがタイムアウトする前に
Visual Studio Codeデバッガから実行を再開すると、Google Workspace アドオンは Google ドキュメントにキャッシュからリンク プレビューを表示します。ローカル環境の
ngrokアプリケーションでホストされているウェブ インターフェースから、HTTP リクエストとレスポンスのログを確認できます。
図 7. ngrokアプリケーションでホストされているウェブ インターフェースからの HTTP リクエスト。アプリケーションの動作を変更するには、
index.jsの51行目のCaseをCase:に置き換えます。ファイルを保存すると、nodemonは更新されたソースコードでアプリケーションを自動的に再読み込みし、Visual Studio Codeはデバッグモードのままになります。
図 8.コード変更が読み込まれた状態で、アプリケーションが実行され、ポート 9000で HTTP リクエストをリッスンしています。今回は、新しい Google ドキュメントでリンクをクリックして数秒待つ代わりに、ローカル環境の
ngrokアプリケーションでホストされているウェブ インターフェースに記録された最後の HTTP リクエストを選択して、Replayをクリックします。前回と同様に、Google Workspace アドオン はアクティブに デバッグされているため、応答しません。Visual Studio Codeデバッガから実行を再開すると、ローカル環境のngrokアプリケーションでホストされているウェブ インターフェースから、アプリケーションが更新されたバージョンのプレビュー カードでレスポンスを生成していることを確認できます。
Python
ローカル環境にインストールされている
Visual Studio CodeIDE で、次の操作を行います。- 新しいウィンドウで、
add-ons-samples/python/3p-resources/create_link_previewフォルダを開きます。 Python
envの仮想環境を作成して有効にします。virtualenv envsource env/bin/activate仮想環境で
pipを使用して、すべてのプロジェクトの依存関係をインストールします。pip install -r requirements.txtルート ディレクトリに
.vscode/launch.jsonファイルを作成し、仮想環境envのデバッグモードでポート9000のモジュールfunctions-frameworkからアプリケーションをトリガーするDebug Watchという名前の起動を構成します。{ "version": "0.2.0", "configurations": [{ "type": "python", "request": "launch", "name": "Debug Watch", "python": "${workspaceFolder}/env/bin/python3", "module": "functions_framework", "args": [ "--target", "create_link_preview", "--port", "9000", "--debug" ] }] }main.pyファイルで HTTP リクエスト処理を一時停止するブレークポイントを追加し、先ほど追加したDebug Watch構成で 実行とデバッグを開始します。これで、アプリケーションが実行され、ポート9000で HTTP リクエストをリッスンします。
図 3.アプリケーションが実行され、ポート 9000で HTTP リクエストをリッスンしています。
- 新しいウィンドウで、
ローカル環境で
ngrokアプリケーションを起動します。ngrok http --domain=NGROK_STATIC_DOMAIN 9000NGROK_STATIC_DOMAINは、ngrokアカウントの静的ドメインに置き換えます。これで、すべてのリクエストがローカル環境とアプリケーションで使用されるポートにリダイレクトされます。
図 4. ngrokサーバーが実行され、リダイレクトされるターミナル。ngrokアプリケーションによって、localhost にウェブ インターフェースも起動します。ブラウザで開いて、すべてのアクティビティをモニタリングします。
図 5. ngrokアプリケーションでホストされているウェブ インターフェースに HTTP リクエストが表示されない。テスター アカウントを使用して新しい Google ドキュメントでケース URL をプレビューして、Google Workspace アドオンをテストします。
Google ドキュメントを作成します。
次のリンクを入力して
enterキーを押します。https://example.com/support/case/?name=Name1&description=Description1&priority=P1リンクをクリックします。
ローカル環境の
Visual Studio Codeで、設定したブレークポイントで実行が一時停止していることを確認できます。
図 6.設定したブレークポイントで実行が一時停止しています。 Google Workspace アドオンがタイムアウトする前に
Visual Studio Codeデバッガから実行を再開すると、Google Workspace アドオンは Google ドキュメントにキャッシュからリンク プレビューを表示します。ローカル環境の
ngrokアプリケーションでホストされているウェブ インターフェースから、HTTP リクエストとレスポンスのログを確認できます。
図 7. ngrokアプリケーションでホストされているウェブ インターフェースからの HTTP リクエスト。アプリケーションの動作を変更するには、
main.pyファイルの56行目のCaseをCase:に置き換えます。ファイルを保存すると、Visual Studio Codeは更新されたソースコードでアプリケーションを自動的に再読み込みし、デバッグモードのままになります。
図 8.コード変更が読み込まれた状態で、アプリケーションが実行され、ポート 9000で HTTP リクエストをリッスンしています。今回は、新しい Google ドキュメントでリンクをクリックして数秒待つ代わりに、ローカル環境の
ngrokアプリケーションでホストされているウェブ インターフェースに記録された最後の HTTP リクエストを選択して、Replayをクリックします。前回と同様に、Google Workspace アドオン はアクティブに デバッグされているため、応答しません。Visual Studio Codeデバッガから実行を再開すると、ローカル環境のngrokアプリケーションでホストされているウェブ インターフェースから、アプリケーションが更新されたバージョンのプレビュー カードでレスポンスを生成していることを確認できます。
Java
ローカル環境にインストールされている
Visual Studio CodeIDE で、次の操作を行います。- 新しいウィンドウで、
add-ons-samples/java/3p-resourcesフォルダを開きます。 Cloud Functions Framework ビルドプラグイン
function-maven-pluginをpom.xmlファイルに追加して、アプリケーションCreateLinkPreviewをポート9000でローカルに実行するように Maven プロジェクトを構成します。... <plugin> <groupId>com.google.cloud.functions</groupId> <artifactId>function-maven-plugin</artifactId> <version>0.11.0</version> <configuration> <functionTarget>CreateLinkPreview</functionTarget> <port>9000</port> </configuration> </plugin> ...これで、デバッグモードでローカルに起動できます。
mvnDebug function:run Preparing to execute Maven in debug mode Listening for transport dt_socket at address: 8000ルート ディレクトリに
.vscode/launch.jsonファイルを作成し、ポート8000で以前に起動したアプリケーションに接続するRemote Debug Watchという名前の起動を構成します。{ "version": "0.2.0", "configurations": [{ "type": "java", "request": "attach", "name": "Remote Debug Watch", "projectName": "http-function", "hostName": "localhost", "port": 8000 }] }CreateLinkPreview.javaファイルで HTTP リクエスト処理を一時停止するブレークポイントを追加し、先ほど追加したRemote Debug Watch構成でアタッチと デバッグを開始します。これで、アプリケーションが実行され、ポート9000で HTTP リクエストをリッスンします。
図 3.アプリケーションが実行され、ポート 9000で HTTP リクエストをリッスンしています。
- 新しいウィンドウで、
ローカル環境で
ngrokアプリケーションを起動します。ngrok http --domain=NGROK_STATIC_DOMAIN 9000NGROK_STATIC_DOMAINは、ngrokアカウントの静的ドメインに置き換えます。これで、すべてのリクエストがローカル環境とアプリケーションで使用されるポートにリダイレクトされます。
図 4. ngrokサーバーが実行され、リダイレクトされるターミナル。ngrokアプリケーションによって、localhost にウェブ インターフェースも起動します。ブラウザで開いて、すべてのアクティビティをモニタリングします。
図 5. ngrokアプリケーションでホストされているウェブ インターフェースに HTTP リクエストが表示されない。テスター アカウントを使用して新しい Google ドキュメントでケース URL をプレビューして、Google Workspace アドオンをテストします。
Google ドキュメントを作成します。
次のリンクを入力して
enterキーを押します。https://example.com/support/case/?name=Name1&description=Description1&priority=P1リンクをクリックします。
ローカル環境の
Visual Studio Codeで、設定したブレークポイントで実行が一時停止していることを確認できます。
図 6.設定したブレークポイントで実行が一時停止しています。 Google Workspace アドオンがタイムアウトする前に
Visual Studio Codeデバッガから実行を再開すると、Google Workspace アドオンは Google ドキュメントにキャッシュからリンク プレビューを表示します。ローカル環境の
ngrokアプリケーションでホストされているウェブ インターフェースから、HTTP リクエストとレスポンスのログを確認できます。
図 7. ngrokアプリケーションでホストされているウェブ インターフェースからの HTTP リクエスト。今回は、新しい Google ドキュメントでリンクをクリックして数秒待つ代わりに、ローカル環境の
ngrokアプリケーションでホストされているウェブ インターフェースに記録された最後の HTTP リクエストを選択して、Replayをクリックします。前回と同様に、Google Workspace アドオン はアクティブに デバッグされているため、応答しません。Visual Studio Codeデバッガから実行を再開すると、ローカル環境のngrokアプリケーションでホストされているウェブ インターフェースから、アプリケーションが更新されたバージョンのプレビュー カードでレスポンスを生成していることを確認できます。
リモート環境からデバッグする
このセクションでは、リモート環境で実行される Google Workspace アドオンを操作します。
前提条件
- Google Workspace アドオンがデプロイされ、インストールされていること。
- アプリケーションがリモート環境で実行されており、特定のポートでデバッガが有効になっていること。このガイドの手順では
REMOTE_DEBUG_PORTとして参照されます。 - ローカル環境からリモート環境に
sshできること。 - デバッグ可能な IDE がローカル環境に設定されていること。このガイドでは、説明のために
Visual Studio CodeIDE とそのデフォルトの デバッグ機能を使用します。
ローカル環境とリモート環境を接続する
デバッグ クライアント接続を開始するローカル環境で、SSH トンネルを設定します。
ssh -L LOCAL_DEBUG_PORT:localhost:REMOTE_DEBUG_PORT REMOTE_USERNAME@REMOTE_ADDRESS次のように置き換えます。
LOCAL_DEBUG_PORT: ローカル環境のデバッグポート。REMOTE_USERNAME: リモート環境のユーザー名。REMOTE_ADDRESS: リモート環境のアドレス。REMOTE_DEBUG_PORT: リモート環境のデバッグポート。
これで、ローカル環境のデバッグポートがリモート環境のデバッグポートにリンクされました。
デバッグを開始する
ローカル環境にインストールされている Visual Studio Code IDE で、次の操作を行います。
- 新しいウィンドウで、アプリのソースコードを開きます。
ルート ディレクトリに
.vscode/launch.jsonファイルを作成し、ローカル環境のデバッグポートに接続するDebug Remoteという名前の起動を構成します。Node.js
{ "version": "0.2.0", "configurations": [{ "type": "node", "request": "attach", "name": "Debug Remote", "address": "127.0.0.1", "port": LOCAL_DEBUG_PORT }] }Python
{ "version": "0.2.0", "configurations": [{ "type": "python", "request": "attach", "name": "Debug Remote", "connect": { "host": "127.0.0.1", "port": LOCAL_DEBUG_PORT } }] }Java
{ "version": "0.2.0", "configurations": [{ "type": "java", "request": "attach", "name": "Debug Remote", "hostName": "127.0.0.1", "port": LOCAL_DEBUG_PORT }] }LOCAL_DEBUG_PORTは、ローカル環境のデバッグポートに置き換えます。HTTP リクエスト 処理を一時停止するアプリのソースコードにブレークポイントを追加し、先ほど追加した
Debug Remote構成で実行と デバッグを開始します。インストールした Google Workspace アドオンを操作します。 Google Workspace アドオンは、 アクティブにデバッグ されているため、
Visual Studio CodeIDE では応答しません。
関連トピック
- エラーログをクエリする方法を確認する。