Google Apps Scriptで正確な時間に関数を実行する方法

うーんGoogle Apps Scriptの時間ベースのトリガーじゃ正確な時間に実行できない。どうすればいいのかしら?

スポンサーリンク

例 : GASで毎日0:00に実行したい

GoogleAppsScriptのトリガーは時間ベースのトリガーでも1時間のうちどこで実行するかわからない問題があり、正確な時間に実行したくなることがあります。

以下のコードは毎日、明日の0:00時にトリガーを作成します。

function myfunction() {
    // 処理
    setTrigger()
}

function setTrigger() {
    // 今日の日付を取得
    const date = new Date();
    // 翌日に変換
    date.setDate(date.getDate() + 1);
    date.setHours(0);
    date.setMinutes(0);
    date.setSeconds(0);

    ScriptApp.newTrigger('myfunction').timeBased().at(date).create();
}

dateはDateオブジェクトのインスタンスなのでこれに日付と時間をセットし、at() の引数として設定します。一旦トリガーをセットすれば myfunction() で setTrigger() が実行されるので毎日正確な時間に指定の関数が実行できます。

スポンサーリンク

まとめ

Google Apps Scriptで正確な時間に関数を実行したい場合は Dateオブジェクトに時間を設定してnewTrigger() を使ってスクリプトでトリガーを作成します。ちなみにさきほどの見出しで解説したコードは毎日指定の時間にトリガーをセットするコードでしたが、これを応用すると「毎日指定した時間から〇時間おきにトリガーをセット」みたいなこともできます。

Google Apps Scriptのトリガーは20個までという制限があるためその点には注意が必要です。以下の記事でスクリプトで無効なトリガーを削除する方法を紹介していますので参考にしてみてください。
Google Apps Scriptの無効なトリガーをスクリプトで削除する

コメント

タイトルとURLをコピーしました