为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用时间来确定一个函数是否应该运行?

如何使用时间来确定一个函数是否应该运行?

茅侃侃 2021-08-20 16:31:10
我想在工作日的 8 点、11 点、1 点和 3 点运行一个 google 脚本。我使用基于时间的触发器来运行一个函数 checkTime(),每小时检查一次时间,并在当天和时间运行。Google Scripts 中的时间触发器是有限的,我想使用它,所以我不必创建(5 天 x 4 个不同的时间 = 20 个触发器)。让它针对一个函数运行似乎是一个更简单的解决方案,但我就是想不通。这是我想出的伪代码。谁能指出我正确的方向或举例说明?  var d = new Date();  if(dayOfWeek == 'Monday' || ... || dayOfWeek == 'Friday') &&    d == '8:00' || d == '11:00' || d == '13:00' || d == '15:00'){    myFunction();  }}预期结果是 M、T、W、R 或 F 在 8、11、13 和 15 处,条件应评估为 True 并且函数运行。所有其他时间都应评估为 False。
查看完整描述

3 回答

?
翻阅古今

TA贡献1780条经验 获得超5个赞

您可以使用对象的getUTCDay和getUTCHours()方法来做到这一点Date。


测试如下:


const now = new Date();

const [day,  hour] = [now.getUTCDay(), now.getUTCHours()];

const okDays = new Set([1, 2, 3, 4, 5]);

const okHours = new Set([8, 11, 13, 15]);


if (okHours.has(hour) && okDays.has(day)) {

    // do stuff

}


查看完整回答
反对 回复 2021-08-20
?
繁星淼淼

TA贡献1775条经验 获得超11个赞

Google Apps Script 不支持Setorincludes方法,因此您可能必须使用旧的 JavaScript 才能使其正常工作。


var d = new Date();  

if (d.getDay() < 6 && [8, 11, 13, 15].indexOf(d.getHours()) !== -1) {

  myFunction();

}


查看完整回答
反对 回复 2021-08-20
?
30秒到达战场

TA贡献1828条经验 获得超6个赞

var d = new Date(); // Date time now


const isWeekday = d.getDay() < 6; // Saturday

const isCorrectTime = [8, 11, 13, 15].includes(d.getHours()); // For correct hours


查看完整回答
反对 回复 2021-08-20
  • 3 回答
  • 0 关注
  • 162 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信