我试图创建一个仅在工作日和特定时间激活的触发器,但我不知道我做错了什么。这是我的代码。
function createTriggers() {
var days = [ScriptApp.WeekDay.MONDAY, ScriptApp.WeekDay.TUESDAY,
ScriptApp.WeekDay.WEDNESDAY, ScriptApp.WeekDay.THURSDAY,
ScriptApp.WeekDay.FRIDAY];
var d = new Date();
var time = d.toLocaleTimeString();
if (time == '3:05:00 PM EDT') {
for (var i = 0; i < days.length; i++) {
ScriptApp.newTrigger(Lunch1)
.timeBased().onWeekDay(days[i])
.everyMinutes().create();
}
}
}
答案 0 :(得分:0)
你应该这样做:
function createTriggers(func, hour) {
var weekdays = [ScriptApp.WeekDay.MONDAY, ScriptApp.WeekDay.TUESDAY,
ScriptApp.WeekDay.WEDNESDAY, ScriptApp.WeekDay.THURSDAY,
ScriptApp.WeekDay.FRIDAY];
for (var dayIndex in weekdays) {
var day = weekdays[dayIndex];
ScriptApp.newTrigger(func).timeBased()
.onWeekDay(day).atHour(hour).create();
}
}
此代码在调用func
函数的特定时间内为工作日创建触发器。
答案 1 :(得分:0)
我猜你是说你想要这样做,所以每个工作日在一天的特定时间触发(运行)一个功能。这就是我要做的事。
首先,在脚本编辑器中:
转到资源 - 当前项目的触发器
点击添加新触发器
选择您要触发的功能
将下一个框更改为&#34;时间驱动&#34;
将下一个框更改为&#34;小时计时器&#34;
然后将最后一个框更改为&#34;每小时&#34;
然后在函数的最开头添加以下代码:
var d = new Date();
if (d.getDay() == 6 || d.getDay() == 0) return;
// more info here: http://www.w3schools.com/jsref/jsref_getday.asp
如果它是周六或周日,那将阻止脚本的其余部分运行。
然后,假设您希望脚本仅在每个工作日的某个特定时间运行,您可以将时间驱动的触发器设置为&#34;每分钟&#34;然后在上面的一个之后添加另一个if语句:
if (d.getHours() != 15 && d.getMinutes() != 5) return;
如果不完全是15:05(下午3:05),那将阻止脚本的其余部分运行。
这绝对不是最有效的方法,但它确实有效。
此外,值得一提的是:我不确定是否有任何可能阻止您每分钟触发脚本的事情。谷歌确实对您的脚本可以执行的操作施加配额,但我没有看到任何关于脚本在一天内被触发多少次的信息。这是图表:https://developers.google.com/apps-script/guides/services/quotas