あらゆる種類のアプリを開発する際には、開発中の障害の診断、顧客の問題の特定と診断、その他の目的のために情報をログに記録することがよくあります。
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 プロジェクトを開いたら、目的のログエントリを選択し、展開して [metadata] > [labels] > [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 と Error Reporting を最大限に活用するには、スクリプトの GCP プロジェクトへのアクセス権が必要です。これは、スクリプト プロジェクトが標準の Google Cloud プロジェクトを使用している場合にのみ可能です。