Google电子表格触发器

时间:2014-04-22 19:14:32

标签: google-apps-script

我试图创建一个仅在工作日和特定时间激活的触发器,但我不知道我做错了什么。这是我的代码。

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();
        }
    }
}

2 个答案:

答案 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)

我猜你是说你想要这样做,所以每个工作日在一天的特定时间触发(运行)一个功能。这就是我要做的事。

首先,在脚本编辑器中:

  1. 转到资源 - 当前项目的触发器

  2. 点击添加新触发器

  3. 选择您要触发的功能

  4. 将下一个框更改为&#34;时间驱动&#34;

  5. 将下一个框更改为&#34;小时计时器&#34;

  6. 然后将最后一个框更改为&#34;每小时&#34;

  7. 然后在函数的最开头添加以下代码:

    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

相关问题