Google Apps Script をトリガーから関数に引数がある場合、あるオブジェクトが渡される

移転しました。

最近、KPIをDBやらGoogle Analytics などから値を引っ張ってきて、Google Spreadsheetに値を入れるというお仕事をしている一環で、よく Google Apps Script のトリガーを触ります。

そのトリガーから起動される関数の引数に渡される値が、手動起動の場合と トリガー起動の場合で異なってややはまったのでその挙動の違いをブログに残しておきます。

手動起動

以下のようなPGを書いて、▶️ を押して実行すると

f:id:shohu33:20160418154144j:plain

引数は undefined ということがわかります。まぁ何も引数指定していないので当たり前ですね

f:id:shohu33:20160418154218j:plain

自動起動

ただ、以下のようなトリガーを設定して実行すると

f:id:shohu33:20160418154324j:plain

以下のようなオブジェクトが入っていることがわかります。

f:id:shohu33:20160418154736j:plain

この不思議なオブジェクトは

どうも Time-driven events というやつが入っているようで、トリガー実行時に勝手に渡されるようです。

f:id:shohu33:20160418154838j:plain

ちなみにトリガー実施日時は以下のようにとれるようです。もっと良い取り方ありそうな気もしますが、、、

targetDay = new Date(event['year'] + '/' + event['month'] + '/' + event['day-of-month']);

このような挙動の違いを把握して、トリガー実行する必要があるので気をつけてトリガー実行しましょう。