あらゆる種類のアプリを開発する際には、開発中の障害の診断、顧客の問題の特定と診断、その他の目的のために情報をログに記録することがよくあります。
Apps Script には、次の 3 つのロギング メカニズムがあります。
組み込みの Apps Script 実行ログ。このログは軽量でリアルタイムでストリーミングされますが、保持されるのは短時間のみです。
デベロッパー コンソールの Cloud Logging インターフェース。作成後数日間保持されるログを提供します。
デベロッパー コンソールの Error Reporting インターフェース。スクリプトの実行中に発生したエラーを収集して記録します。
以降のセクションで詳しく説明します。これらのメカニズムに加えて、独自のロガーコードを作成することもできます。たとえば、ロギング スプレッドシートや JDBC データベースに情報を書き込むコードを作成できます。
Apps Script の実行ログを使用する
Apps Script でロギングを行う基本的な方法は、組み込みの実行ログを使用することです。これらのログを表示するには、エディタの上部にある [実行ログ] をクリックします。関数を実行するか、デバッガを使用すると、ログがリアルタイムでストリーミングされます。
組み込みの実行ログで Logger
または console
ロギング サービスを使用できます。
これらのログは、開発とデバッグ中の簡単なチェックを目的としており、長時間保持されることはありません。
たとえば、次のような関数について考えてみましょう。
このスクリプトを入力「2」と「john@example.com」で実行すると、次のログが書き込まれます。
[16-09-12 13:50:42:193 PDT] データの行 2 を john@example.com にメール送信
[16-09-12 13:50:42:271 PDT] 行 2 のデータ: 費用 103.24
Cloud Logging
また、Apps Script では、Google Cloud Platform(GCP)の Cloud Logging サービスへの部分的なアクセスも可能です。数日間保持するロギングが必要な場合や、マルチユーザーの本番環境に複雑なロギング ソリューションが必要な場合は、Cloud Logging が推奨されます。データの保持やその他の割り当ての詳細については、Cloud Logging の割り当てと上限をご覧ください。
ロギング割り当てがさらに必要な場合は、Google Cloud Platform の割り当てリクエストを送信できます。これを行うには、スクリプトで使用する Cloud Platform プロジェクトにアクセスできる必要があります。
Cloud Logging の使用
Cloud ログは、Apps Script に関連付けられている Google Cloud プロジェクトに関連付けられます。これらのログの簡略版は、Apps Script ダッシュボードで確認できます。
Cloud Logging とその機能を最大限に活用するには、スクリプト プロジェクトで標準の Google Cloud プロジェクトを使用します。これにより、GCP Console で Cloud ログに直接アクセスでき、表示とフィルタリングに関するオプションがさらに増えます。
ロギングする際は、メールアドレスなどのユーザーの個人情報を記録しないことをおすすめします。Cloud ログには、必要に応じて特定のユーザーのログメッセージを検索するために使用できるアクティブ ユーザーキーが自動的にラベル付けされます。
Apps Script の console
サービスで提供される関数を使用して、文字列、書式設定された文字列、JSON オブジェクトをログに記録できます。
次の例は、console
サービスを使用して Cloud Operations に情報をロギングする方法を示しています。
アクティブなユーザーキー
一時的なアクティブ ユーザーキーを使用すると、ユーザーの ID を公開することなく、Cloud ログエントリ内の一意のユーザーを簡単に見つけることができます。キーはスクリプトごとにあり、問題の報告時などにユーザーがデベロッパーに身元を明かす場合に備えて、約 1 か月ごとに変更されます。
一時的なアクティブ ユーザー キーは、メールアドレスなどのロギング識別子よりも優れています。その理由は次のとおりです。
- ロギングに何も追加する必要はありません。すでに含まれています。
- ユーザーの承認は必要ありません。
- ユーザーのプライバシーを保護します。
Cloud ログエントリで一時的に有効なユーザーキーを確認するには、Google Cloud コンソールで Cloud ログを表示します。これは、スクリプト プロジェクトで、アクセス権のある標準の Google Cloud プロジェクトを使用している場合にのみ行えます。コンソールで Google Cloud プロジェクトを開いたら、目的のログエントリを選択し、展開して [メタデータ] > [ラベル] > [script.googleapis.com/user_key] を表示します。
スクリプトで Session.getTemporaryActiveUserKey()
を呼び出すことで、一時的なアクティブ ユーザー キーを取得することもできます。この方法を使用する方法の一つは、スクリプトを実行しているときにユーザーにキーを表示することです。ユーザーは、問題を報告する際にキーを含めることで、関連するログを特定できます。
例外のロギング
例外ロギングは、スクリプト プロジェクト コード内の未処理の例外をスタックトレースとともに Cloud Logging に送信します。
例外ログを表示する手順は次のとおりです。
- Apps Script プロジェクトを開きます。
- 左側の [実行] をクリックします。
- 上部の [フィルタを追加 > ステータス] をクリックします。
- [Failed] チェックボックスと [Timed out] チェックボックスをオンにします。
スクリプト プロジェクトでアクセス可能な標準の Google Cloud プロジェクトを使用している場合は、GCP コンソールでログに記録された例外を表示することもできます。
例外ロギングを有効にする
新しいプロジェクトでは、例外ロギングがデフォルトで有効になっています。古いプロジェクトで例外ロギングを有効にするには、次の操作を行います。
- スクリプト プロジェクトを開きます。
- 左側の [プロジェクト設定] をクリックします。
- [キャッチされなかった例外を Cloud Operations に記録する] チェックボックスをオンにします。
Error Reporting
例外ロギングは、スクリプトで発生したエラーを集計して表示するサービスである Cloud Error Reporting と自動的に統合されます。Cloud エラーレポートは Google Cloud コンソールで確認できます。[Error Reporting を設定] というメッセージが表示されるのは、スクリプトで例外がまだロギングされていないためです。例外ロギングを有効にする以外の設定は必要ありません。
ロギングの要件
組み込みの実行ログを使用する要件はありません。
Cloud ログの簡素化されたバージョンは、Apps Script ダッシュボードで確認できます。ただし、Cloud Logging とエラー レポートを最大限に活用するには、スクリプトの GCP プロジェクトにアクセスできる必要があります。これは、スクリプト プロジェクトで標準の Google Cloud プロジェクトを使用している場合にのみ可能です。