我正在尝试构建一个应该在每周二,周三和周四上午11点到下午2点以及每10分钟后运行一次的Google脚本。
例如如果今天是星期二..则脚本将在上午11点开始执行,并将在每10分钟后执行,然后应该在当天下午2点停止执行。
现在我正在尝试以编程方式设置触发器......如下所示......
function startCustomTrigger()
{
//first remove all existing triggers - for safty
removeTriggers(false);
//script will run every minute defined
ScriptApp.newTrigger('StartProcess').timeBased().onWeekDay(ScriptApp.WeekDay.TUESDAY).onWeekDay(ScriptApp.WeekDay.WEDNESDAY).onWeekDay(ScriptApp.WeekDay.THURSDAY).atHour(11).everyMinutes(10).create();
//script will run every minute defined
ScriptApp.newTrigger('StopProcess').timeBased().onWeekDay(ScriptApp.WeekDay.TUESDAY).onWeekDay(ScriptApp.WeekDay.WEDNESDAY).onWeekDay(ScriptApp.WeekDay.THURSDAY).atHour(2).create();
}
function StopProcess()
{
//first remove all existing triggers - for safety
removeTriggers(false);`enter code here`
//script will run every minute defined
ScriptApp.newTrigger('startCustomTrigger').timeBased().onWeekDay(ScriptApp.WeekDay.TUESDAY).onWeekDay(ScriptApp.WeekDay.WEDNESDAY).onWeekDay(ScriptApp.WeekDay.THURSDAY).atHour(10).create();
}
请知道是否有其他方法可以实现相同目的。
答案 0 :(得分:2)
您还可以考虑使用每10分钟运行一次的触发器,并且在触发器功能中,您可以检查时间和工作日。只有在满足所有条件的情况下才执行代码,否则它将返回而不执行任何操作。
function startCustomTrigger()
{
ScriptApp.newTrigger('StartProcess').timeBased().everyMinutes(10).create();
}
function StartProcess() {
var date = new Date();
var day = date.getDay();
var hrs = date.getHours();
if ((day >= 2) && (day <= 4) && (hrs >= 11) && (hrs <= 14)) {
// Add your code here
}
}
答案 1 :(得分:0)
您需要设置许多触发器才能执行此操作。
所以,你需要七个触发器。三个在特定日期运行,然后创建一个触发器,从上午10点开始每10分钟运行一次。一个触发器将在上午10点开始并无限期地继续运行(直到你关闭它)。还有三个触发器可以阻止每10分钟运行一次的触发器。
应在特定日期运行的触发器应手动设置。因此,将手动设置6个触发器。需要创建每10分钟运行一次的触发器并从代码中删除。
作为“周计时器”的六个触发器,在特定的一天运行,只需要运行一次以创建将每10分钟运行一次的触发器。我比你想要运行10分钟的触发器提前一小时运行它们,只是为了确保它们已经开始运行。