Google应用脚本可停止特定日期范围内的触发器

问题描述 投票:0回答:3

我有一个脚本,以防止触发器在特定时间运行,感谢Amit Agarwal谁帮助我在this thread

脚本是这样的:

function shouldRunTrigger() {
  var days = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"];
  var date = new Date();
  var day = days[date.getDay()];
  var hours = date.getHours();
  if ((day === "Fri" && hours >= 17) || (day === "Sat" && hours <= 22)) {
    return false;
  }
  return true;
}

function myTrigger() {
  if (!shouldRunTrigger()) return;
  // trigger code here
}

此代码可以防止我的触发器从周五下午5点到周六晚上10点运行,并且它工作得很好。

现在我需要的是添加另一个else if以防止触发器在特定范围日期运行,例如:

  • 我想不要在3月23日下午3点到3月25日下午5点之间运行它
  • 我试图在没有运气的情况下实现这一点

有谁可以帮我添加这个if else条件好吗?

谢谢 !

javascript google-apps-script google-sheets
3个回答
0
投票

您可以通过将当前日期与Date对象进行比较来完成此操作,如下所示:

function shouldRunTrigger() {
  var days = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"];
  var date = new Date();
  var day = days[date.getDay()];
  var hours = date.getHours();
  if ((day === "Fri" && hours >= 17) && (day === "Sat" && hours <= 22)) {
    return false;
  }
  else if(date >= new Date('2019-03-23T15:00:00') || date <= new Date('2019-03-25T17:00:00')) {
    return false;
  }
  return true;
}

function myTrigger() {
  if (!shouldRunTrigger()) return;
  // trigger code here
}

JavaScript中的Date对象采用YYYY-MM-DDTHH:MM:SS格式。来自MDN web docs here的更多信息。


0
投票

您可以在shouldRunTrigger()方法中添加另一个检查。

var current = new Date()
var min = new Date(2019,2,23,15);
var max = new Date(2019,2,25,17);
if (current > min && current < max) return false;

0
投票

我已经为||改变了&&,现在工作得很好。

最终的代码是:

else if (date >= new Date('2019-03-10T15:00:00') && date <= new Date('2019-04-25T17:00:00')) {
    return false;
}

谢谢你的帮助!

© www.soinside.com 2019 - 2024. All rights reserved.