![見出し画像](https://assets.st-note.com/production/uploads/images/134014075/rectangle_large_type_2_ac466c5791a171572ea6fe326a158502.jpeg?width=1200)
毎日決まった時間にGAS実行[GAS]
検索してみたところ、「毎日決まった時間にGASを実行する」を解説するweb記事はたくさんありました。
幾つかの記事を参考にさせていただき、自分が使いやすいように改良したものが下記の「setTrigger」関数です。
function myFunction() {
console.log("setTriggerのテストです");
}
function setTrigger() {
const funcName = "myFunction";
const time = "09:18";
const triggers = ScriptApp.getProjectTriggers();
for (const trigger of triggers) {
if (trigger.getHandlerFunction() === funcName) {
ScriptApp.deleteTrigger(trigger);
}
}
const hour = parseInt(time.split(":")[0]);
const minute = parseInt(time.split(":")[1]);
const date = new Date();
date.setHours(hour);
date.setMinutes(minute);
ScriptApp.newTrigger(funcName).timeBased().at(date).create();
}
色々なスクリプトに転用できるよう、最初の2行→
const funcName = "myFunction";
const time = "09:18";
で「実行したいファンクション名」「実行したい時刻」を代入するだけ、という構造にしました。
1日に数回実行する場合は、「実行したい時刻」を配列にすることにしました。
function myFunction2() {
console.log("複数setTriggerのテストです");
}
function setTriggers() {
const funcName = "myFunction2";
const times = ["09:32", "10:15", "11:00", "17:49"];
const triggers = ScriptApp.getProjectTriggers();
for (const trigger of triggers) {
if (trigger.getHandlerFunction() === funcName) {
ScriptApp.deleteTrigger(trigger);
}
}
for (const time of times) {
const hour = parseInt(time.split(":")[0]);
const minute = parseInt(time.split(":")[1]);
const date = new Date();
date.setHours(hour);
date.setMinutes(minute);
ScriptApp.newTrigger(funcName).timeBased().at(date).create();
}
}
上記スクリプトを記述し、関数「setTrigger」「setTriggers」にトリガーを設定します。
「実行したい時刻」より後にトリガーを設定すると意図しない時刻に実行されるようですので、午前0-1時が良いでしょう。
![](https://assets.st-note.com/img/1710491393936-6JzOSCRxnP.png?width=1200)
この記事が気に入ったらサポートをしてみませんか?