我对GAS很陌生。已经创建的脚本(第3段(我需要它每天运行,每3个小时运行一次,在0:30->3:30->6:30->9:30->12:30->15:30->18:30->21:30
这是代码的上部。不能"组合";将3个以下代码合并为一个
function createOpenTrigger() {
ScriptApp.newTrigger("#what should I input here or leave blank????")
.forSpreadsheet(SpreadsheetApp.getActive())
.onOpen()
.create();
}
function createTimeTriggerAtSpecificHourMinute() {
ScriptApp.newTrigger("what should I input here or leave blank????")
.timeBased(00:00)
.everyHour(3)
.nearMinute(30)
.everyDays(1)
.inTimezone("Asia/Tokyo")
.create();
}
function takeSnapShot() {
const ss = SpreadsheetApp.getActiveSpreadsheet();
const mainSheet = ss.getSheetByName('SOURCE');
const snap = mainSheet.getRange("A1:Q26").getDisplayValues();
....
如果我正确理解您的问题,您希望将takeSnapShot()
函数安排为从00:30开始每三个小时运行一次。
使用您提供的示例代码,您可以用以下内容替换createOpenTrigger()
和createTimeTriggerAtSpecificHourMinute()
函数。
function setFirstCall(){
ScriptApp.newTrigger('setRecurrence')
.timeBased()
.atHour(0)
.nearMinute(30)
.inTimezone('Asia/Tokyo')
.create();
}
这将触发第二天00:30附近的一次性呼叫。运行后,触发器将删除自身,但会安排函数setRecurrence()
运行。所以接下来你需要创建一个循环函数。
function setRecurrence(){
ScriptApp.newTrigger('takeSnapShot')
.timeBased()
.everyHours(3)
.create();
}
GAS不允许在"精确"的一分钟内进行调度(精度为+/-15分钟(,但重复应该在同一分钟内,即如果第一个触发器在第27分钟内运行,那么之后的每次迭代都应该在第27分钟内。
希望这能有所帮助。
参考文献:
- TriggerBuilder.timeBased((
- 时钟触发器生成器