Google Apps Script (webapp) でログを記録する
Google Apps Script とログ
Google Apps Script (GAS) で、ログを書く時に長年 Logger.log
を使っていた。
スクリプトを実行し、メニューの 表示
→ ログ
でログを表示できる。
ただし、このログは自分でスクリプトを実行した時のログが表示できるだけで、例えば webapp としてデプロイしている時のログを見ることはできなかった。
Stackdriver Logging の有効化
実行中のログを見るためには Stackdriver Logging というものを利用する。
メニューの 表示
→ Stackdriver Logging
をクリックする。
紐付けができていない場合には以下のダイアログが表示されるので、 Google Cloud Platform でプロジェクトを作ってあげる必要がある。
https://console.cloud.google.com/ にアクセスし、左上のプロジェクト名をクリックし、新しいプロジェクトをクリックする。
適当にプロジェクト名を入力して、作成をクリックする。
するとプロジェクトが作成されるので、プロジェクト番号
をメモする。
GAS のエディタに戻り、メニューから リソース
→ Google Platform プロジェクト
をクリックする。
プロジェクトを紐付けるダイアログが表示されるので、プロジェクト番号を入力して プロジェクトを設定
をクリックする。
OAuth 同意画面を設定する必要があると表示されるので、 こちら
をクリックする。
User Type は 外部
しか選択できないので、外部を選択し、作成 をクリックする。
OAuth 同意画面の作成画面で アプリケーション名 だけ入れて 保存 をクリックする
GAS の先程のダイアログに戻って、もう一度 プロジェクトを設定
をクリックすると、今度は紐付けできる。
ログを出力する
ログを出力するときは Logger
ではなく console
を使う。
こんな感じのスクリプトを webapp として公開して、ブラウザでアクセスしてみる。
const doGet = (e) => { console.log(e); return ContentService.createTextOutput('ok'); }
ログを確認する
メニューの 表示
→ Stackdriver Logging
をクリックする。JSON がいい感じに展開されているのがわかる。
console.log
はログレベルが DEBUG
になる。
console.warn
や console.info
、console.error
なんかが使える。
おまけ
clasp を使わずに GAS を作ると、 Google Apps Script のログに「展開」というボタンが表示されて、そこからログが見られるような気がする。
clasp を使うとこれが表示されない。謎。