給与計算用の Google スプレッドシートがあり、スクリプトを隔週で実行する必要があります。現在、手動で実行しています。時間駆動型のトリガーを使用したいのですが、隔週木曜日の午前 1 時に実行される組み合わせがわかりません。これを行う方法を知っている人はいますか?
質問する
2268 次
5 に答える
3
日付オブジェクトを拡張して週番号をプロトタイプ化し、偶数週 (または明らかに奇数) にのみ呼び出すことを選択できます。
Date.prototype.getWeekNumber = function() {
var firstDay = new Date(this.getFullYear(),0,1);
return Math.ceil((((this - firstDay) / 86400000) + firstDay.getDay()+1)/7);
}
そして、毎週木曜日のトリガーで、すべてを条件付きのようにラップします
if (today.weekNumber() % 2 === 0) {
// triggered function here
}
しかし、私は Phil Bozak のオン/オフフラグのアプローチが好きだと思います
于 2013-02-19T11:25:29.617 に答える
2
スクリプトプロパティを使用して、スクリプトに関するプロパティを保存できます。
次の関数を毎週実行するように設定します
function runEveryWeek() {
var runThisWeek = ScriptProperties.getProperty("runThisWeek");
if (runThisWeek) {
//do your task here
ScriptProperties.setProperty("runThisWeek",false);
} else {
ScriptProperties.setProperty("runThisWeek",true);
}
}
正しく設定されるように、「runThisWeek」プロパティを初期化する必要があります。
于 2013-02-19T07:17:24.507 に答える
1
これを試して:
// The init() function runs once to set up the initial trigger.
function init() {
ScriptApp.newTrigger("ThursdayTrigger")
.timeBased()
.atDate(2013, 3, 21) // Setup the first trigger on a specific date
.create();
}
function ThursdayTrigger() {
// 1. write the function code here
// 2. delete the existing ThursdayTrigger
var triggers = ScriptApp.getScriptTriggers();
for (var i = 0; i < triggers.length; i++) {
if (triggers[i].getHandlerFunction() == "ThursdayTrigger") {
ScriptApp.deleteTrigger(triggers[i]);
}
}
// 3. setup another trigger in the same function that triggers after 14 days.
ScriptApp.newTrigger("ThursdayTrigger")
.timeBased()
.after(1000*60*60*24*14) // Alternate Thursday
.create();
}
于 2013-02-19T10:56:14.143 に答える