ロギング

どのようなアプリを開発する場合でも、アプリの開発に役立てるために情報をログに記録したいことがよくあります。 開発中の障害の診断、お客様の問題の特定と診断 その他の目的に使用できます。

Apps Script には、次の 3 種類のロギング メカニズムがあります。

  • 組み込みの Apps Script 実行ログ。 このログは軽量でリアルタイムでストリーミングされますが、 短い時間です

  • Google Cloud コンソールの Cloud Logging インターフェース Developer Console: ログが、Google Play Console から あります。

  • Error Reporting インターフェース デベロッパー コンソールで発生したエラーが収集、記録される 実行することもできます。

これらについては、次のセクションで説明します。これらのメカニズムのほかに 情報を書き込む独自のロガーコードを作成することもできます。 ロギング用のスプレッドシートにエクスポートする または JDBC データベース

Apps Script の実行ログを使用する

Apps Script にログインするための基本的な方法は、組み込みの 実行ログを記録します。これらのログを表示するには [実行ログ] をクリックします。関数を実行するか デバッガを使用すると、ログがリアルタイムでストリーミングされます。

Logger または 次のゾーンの console ロギング サービス: 実行ログを記録します。

これらのログは、開発やデバッグの際の簡単なチェックを目的としています。 永続性はそれほど高くありません。

たとえば、次の関数について考えてみましょう。

utils/logging.gs
/**
 * Logs Google Sheet information.
 * @param {number} rowNumber The spreadsheet row number.
 * @param {string} email The email to send with the row data.
 */
function emailDataRow(rowNumber, email) {
  console.log('Emailing data row ' + rowNumber + ' to ' + email);
  try {
    const sheet = SpreadsheetApp.getActiveSheet();
    const data = sheet.getDataRange().getValues();
    const rowData = data[rowNumber - 1].join(' ');
    console.log('Row ' + rowNumber + ' data: ' + rowData);
    MailApp.sendEmail(email, 'Data in row ' + rowNumber, rowData);
  } catch (err) {
    // TODO (developer) - Handle exception
    console.log('Failed with error %s', err.message);
  }
}

このスクリプトが入力「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 ログは Google Cloud プロジェクトに接続されます。 関連付けられていますこれらの簡易版を Apps Script ダッシュボードに表示されるログ。

Cloud Logging とその機能を最大限に活用するには、 標準の Google Cloud プロジェクト 指定します。これにより、Cloud Logging から直接 Cloud ログに GCP コンソール 表示とフィルタの選択肢が増えます

記録するときは、個人情報を記録しないように、 メールアドレスなど、ユーザーに関する情報。Cloud ログは 自動的にラベル付け アクティブなユーザーキー 必要に応じて特定のユーザーのログメッセージを探すことができます。

モジュールを使用すると、文字列、書式設定された文字列、JSON オブジェクトをログに記録できます。 App Script または Cloud Functions の関数を console サービス。

次の例は、console の使用方法を示しています。 Cloud Operations に情報を記録できます。

utils/logging.gs
/**
 * Logs the time taken to execute 'myFunction'.
 */
function measuringExecutionTime() {
  // A simple INFO log message, using sprintf() formatting.
  console.info('Timing the %s function (%d arguments)', 'myFunction', 1);

  // Log a JSON object at a DEBUG level. The log is labeled
  // with the message string in the log viewer, and the JSON content
  // is displayed in the expanded log structure under "jsonPayload".
  const parameters = {
    isValid: true,
    content: 'some string',
    timestamp: new Date()
  };
  console.log({message: 'Function Input', initialData: parameters});
  const label = 'myFunction() time'; // Labels the timing log entry.
  console.time(label); // Starts the timer.
  try {
    myFunction(parameters); // Function to time.
  } catch (e) {
    // Logs an ERROR message.
    console.error('myFunction() yielded an error: ' + e);
  }
  console.timeEnd(label); // Stops the timer, logs execution duration.
}

アクティブなユーザーキー

一時的なアクティブ ユーザー キーを使用すると、ネットワーク内のユニーク ユーザーを簡単に特定できます。 それらのユーザーの ID を開示しない Cloud ログエントリ。キー セキュリティ強化のために 1 か月に 1 回程度変更します。 ユーザーが自分の身元をデベロッパーに明かさなければならないか 役立ちます。

一時的なアクティブ ユーザー キーは、メールなどのログ ID よりも優れています。 理由は次のとおりです。

  • ロギングに何も追加する必要はありません。そこまで来ているのです!
  • ユーザーの承認は必要ありません。
  • ユーザーのプライバシーを保護する。

Cloud ログエントリ内の一時的なアクティブ ユーザーキーを見つけるには、次の操作を行います。 Google Cloud コンソールで Cloud のログを表示する。 これは、スクリプト プロジェクトで 標準の Google Cloud プロジェクト あります。コンソールで Google Cloud プロジェクトを開いたら、 目的のログエントリを選択して展開すると メタデータ >ラベル >script.googleapis.com/user_key.

一時的なアクティブ ユーザー キーは、 Session.getTemporaryActiveUserKey() 使用できます。このメソッドを使用する方法の 1 つは、ユーザーにキーを表示することです。 実行中のスクリプトをトリガーできますこれにより、ユーザーは自分の鍵を に関連するログの特定に役立ちます。

例外ロギング

例外ロギングにより、スクリプト プロジェクト コードで未処理の例外が送信される スタック トレースとともに Cloud Logging に送信されます。

例外ログを表示する手順は次のとおりです。

  1. Apps Script プロジェクトを開きます。
  2. 左側の [Executions] をクリックします。
  3. 上部にある [フィルタを追加 >ステータスをご覧ください。
  4. [Failed] と [Timed out] のチェックボックスをオンにします。

ログに記録された例外を GCP コンソールで確認することもできます。 スクリプト プロジェクトが 標準の Google Cloud プロジェクト あります。

例外ロギングを有効にする

新しいプロジェクトでは、例外ロギングがデフォルトで有効になっています。例外を有効にするには 手順は次のとおりです。

  1. スクリプト プロジェクトを開きます。
  2. 左側の [プロジェクトの設定] をクリックします。
  3. [捕捉されなかった例外を Cloud Operations にロギングする] チェックボックスをオンにします。

Error Reporting

例外ロギングは Cloud Logging と Cloud Error Reporting スクリプトによって生成されたエラーを集計して表示するサービス。 Google Chat では Google Cloud コンソールで Cloud エラーレポートを表示する。 「Error Reporting の設定」というプロンプトが表示された場合その理由は スクリプトの例外がログに記録されていません。他の設定は不要 例外ロギングを有効にする

ロギングの要件

組み込みの実行ログを使用するための要件はありません。

Cloud ログの簡易版は、 Apps Script ダッシュボード。ただし、 Cloud Logging と Error Reporting を最大限に活用するには、 スクリプトの GCP プロジェクトに追加します。これを行えるのは、スクリプト プロジェクトが 標準の Google Cloud プロジェクトを使用している。