🦁
GASのログをスプレッドシートに書き出す方法
はじめに
doGet
やdoPost
のように外部からのGETリクエストやPOSTリクエストで起動した関数のログはエディターでは確認することができません。
下記のようにGCPプロジェクトと紐づけるとログは確認できますが、そこまでの手間をかけたくない場合も多いと思います。そのような場合にログをスプレッドシートに書き出せないかと思い試してみました。
記述内容
LOG_WRITING_FILE_IDは環境変数に設定しているスプシのIDです。
const numbers = [1, 2, 3, 4, 5];
const spreadsheetId = PropertiesService.getScriptProperties().getProperty('LOG_WRITING_FILE_ID');
if (spreadsheetId) {
// 最初のシートを対象とします
const sheet = SpreadsheetApp.openById(spreadsheetId).getSheets()[0];
// 現在の日時を取得
const now = new Date();
sheet.appendRow([
// わかりやすいように1列目には現在の日時を書き込む
Utilities.formatDate(now, 'JST', 'yyyy/MM/dd HH:mm:ss'),
JSON.stringify(numbers)
]);
}
スプレッドシートに書き出したログ
下記のようになっているかと思います。
ログについて
Loggerとconsoleの違い
Loggerクラスのメリット
コンソール画面の実行数からのログについて確認できる
Loggerクラスのデメリット
ログがjson形式で表示されない。
consoleクラスのメリット
ログがjson形式で表示されるので非常に見やすい。
consoleクラスのデメリット
コンソールの実行ログからは確認できるが、実行数からは確認できない。
GCPに紐づけると確認できるようになります。
console.time() という実行時間を計測するためのメソッドを使用している場合には、自分で開始時刻と終了時刻を取得するコードを書いて差分をLogger.log()で取得するとコンソールでも確認できます。
終わりに
何かありましたらお気軽にコメント等いただけると助かります。
ここまでお読みいただきありがとうございます🎉
Discussion