続・GASのトリガーの挙動がおかしくなった話

柏木です。

前回,GASのトリガーの挙動がなんだかおかしいという記事を書きました。
その後進展があったので,そちらのご報告になります。

前回までのあらすじ

わざわざ記事をたどるのがめんどくさいという方のために,前回までのあらすじです。
とりあえずGASのトリガーの挙動がおかしくなったので,GASのトリガーをプログラムから設置するのではなく,手で設置する形で様子見をすることにした…というのが前回まで。

もう一度やってみる

GASのトリガー設定画面から設定すればうまくいくことは分かりました。

ダメ元でもう一度コードから設定するようにしてみました。
コードは下記。

function setTrigger() {
        let setTime = new Date();
        setTime.setMinutes(setTime.setMinutes() + 5); //実行から5分後にセットされるようにしたい
        ScriptApp.newTrigger("myFunction").timeBased().at(setTime).create();
    }

そのままですが,実行から5分後にトリガーをセットしてくれというものです。

あれ?普通に起動してる…?

なぜかは分かりませんが,今度はトリガーが正常にセット→起動→実行→セット(以下繰り返し)ができるようになっていました。
なんでだ。
なんか助走みたいなものが必要だったってこと?
ということはコードからセットすることもできるようになるのでは…?

というわけで以前のコードに戻してみる

以前のコード(トリガー部分抜粋)は下記。

function setTrigger() {
        let setTime = new Date();
        setTime.setDate(setTime.getDate() + 1); //翌日にセットしたいので +1 してます
        setTime.setHours(15); //15時台にセットしたい
        setTime.setMinutes(00); //15時ぴったりにセットしたいので00としています
        ScriptApp.newTrigger("myFunction").timeBased().at(setTime).create();
    }

これで数日間実行させましたが,今度は以前のように問題なく起動するようになっていました。

まとめ

これが正しい方法かは分かりませんが,とりあえず解決に至ったので,解決に至るまでの手順を簡単にまとめます。

  1. 権限を付与し直すため,新しくファイルを作る
    (コードはそのままコピペでよい)
  2. 一度自分がコードからセットしたいものに近いトリガーをトリガー画面からセットして助走させてみる
  3. 成功したら元のコードに戻す

以上になります。

GASを含めすべての技術は独学なので,専門の方から見たらありえない部分だらけかと思いますが,参考になれば幸いです。

コメントする

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です