Google Apps Script (webapp) でログを記録する

Google Apps Script とログ

Google Apps Script (GAS) で、ログを書く時に長年 Logger.log を使っていた。 スクリプトを実行し、メニューの 表示ログ でログを表示できる。 ただし、このログは自分でスクリプトを実行した時のログが表示できるだけで、例えば webapp としてデプロイしている時のログを見ることはできなかった。

Stackdriver Logging の有効化

実行中のログを見るためには Stackdriver Logging というものを利用する。

メニューの 表示Stackdriver Logging をクリックする。

f:id:mallowlabs:20200507195455p:plain

紐付けができていない場合には以下のダイアログが表示されるので、 Google Cloud Platform でプロジェクトを作ってあげる必要がある。

f:id:mallowlabs:20200507195516p:plain

https://console.cloud.google.com/ にアクセスし、左上のプロジェクト名をクリックし、新しいプロジェクトをクリックする。

f:id:mallowlabs:20200507195537p:plain

適当にプロジェクト名を入力して、作成をクリックする。

f:id:mallowlabs:20200507195548p:plain

するとプロジェクトが作成されるので、プロジェクト番号 をメモする。

f:id:mallowlabs:20200507195602p:plain

GAS のエディタに戻り、メニューから リソースGoogle Platform プロジェクト をクリックする。

f:id:mallowlabs:20200507195616p:plain

プロジェクトを紐付けるダイアログが表示されるので、プロジェクト番号を入力して プロジェクトを設定 をクリックする。 OAuth 同意画面を設定する必要があると表示されるので、 こちら をクリックする。

f:id:mallowlabs:20200507195631p:plain

User Type は 外部 しか選択できないので、外部を選択し、作成 をクリックする。

f:id:mallowlabs:20200507195643p:plain

OAuth 同意画面の作成画面で アプリケーション名 だけ入れて 保存 をクリックする

f:id:mallowlabs:20200507195658p:plain

GAS の先程のダイアログに戻って、もう一度 プロジェクトを設定 をクリックすると、今度は紐付けできる。

f:id:mallowlabs:20200507195710p:plain

ログを出力する

ログを出力するときは Logger ではなく console を使う。

こんな感じのスクリプトを webapp として公開して、ブラウザでアクセスしてみる。

const doGet = (e) => {
  console.log(e);
  return ContentService.createTextOutput('ok');
}

ログを確認する

メニューの 表示Stackdriver Logging をクリックする。JSON がいい感じに展開されているのがわかる。

f:id:mallowlabs:20200507195724p:plain

console.log はログレベルが DEBUG になる。 console.warnconsole.infoconsole.error なんかが使える。

おまけ

clasp を使わずに GAS を作ると、 Google Apps Script のログに「展開」というボタンが表示されて、そこからログが見られるような気がする。

f:id:mallowlabs:20200507195738p:plain

clasp を使うとこれが表示されない。謎。 

参考 URL