猿问

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

我想在工作日的 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。


茅侃侃
浏览 163回答 3
3回答

翻阅古今

您可以使用对象的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}

繁星淼淼

Google Apps Script 不支持Setorincludes方法,因此您可能必须使用旧的 JavaScript 才能使其正常工作。var d = new Date();&nbsp;&nbsp;if (d.getDay() < 6 && [8, 11, 13, 15].indexOf(d.getHours()) !== -1) {&nbsp; myFunction();}

30秒到达战场

var d = new Date(); // Date time nowconst isWeekday = d.getDay() < 6; // Saturdayconst isCorrectTime = [8, 11, 13, 15].includes(d.getHours()); // For correct hours
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答