Javascript 为什么我在google apss脚本中出现错误;您不能在过去安排活动”;
我正试图找出如何在谷歌应用程序脚本中为函数创建一次性触发器 基本上我希望能够安排一个活动,比如说明天下午2点。我不希望它是一个重复发生的事件(我看到谷歌的所有文档都是关于重复发生的事件) 我一直收到这个错误Javascript 为什么我在google apss脚本中出现错误;您不能在过去安排活动”;,javascript,date,google-apps-script,Javascript,Date,Google Apps Script,我正试图找出如何在谷歌应用程序脚本中为函数创建一次性触发器 基本上我希望能够安排一个活动,比如说明天下午2点。我不希望它是一个重复发生的事件(我看到谷歌的所有文档都是关于重复发生的事件) 我一直收到这个错误异常:您不能在过去安排事件。(第17行,文件“代码” 欢迎任何解释/帮助 function trigger(){ var rawdate = "2020-07-29T11:30"; var time = rawdate.substr(11).split(':'); va
异常:您不能在过去安排事件。(第17行,文件“代码”
欢迎任何解释/帮助function trigger(){ var rawdate = "2020-07-29T11:30"; var time = rawdate.substr(11).split(':'); var durationMilliseconds = time[0] * 3600000 + time[1] * 60000; var year = rawdate.substr(0,4); var month = rawdate.substr(5,2); var date = rawdate.substr(8,2); ScriptApp.newTrigger("myFunction") .timeBased() .atDate(year, month, date) .after(durationMilliseconds) .inTimezone("America/New_York") .create(); }
非常接近。您只需计算计划(触发器)日期时间和当前日期时间之间的差异,以小时为单位。然后,您将把小时差异添加到.after()方法中: 现在,您不需要:最后但并非最不重要的一点是,rawdate可以直接传递给新的Date()对象:
从时差开始 从正确的时区.inTimezone(“美国/纽约”)
,因为脚本将自动计算金额 脚本将基于计划日期运行后的小时数.atDate()
如果正在使用方法,则不应使用after()
方法。我猜atDate()
方法首先被评估,因为您使用的是今天的日期,所以它将日期评估为今天,就在一天开始的午夜之后,这已经过去了。今天的00:00已经过去了。atDate()方法
方法不会给after()
atDate()方法添加时间。
方法自动确定创建时的当前时间戳是什么,然后再从那里开始。明白了,有没有想法如何从日期和时间戳中创建我想要的内容。如何为将来的某个时间安排事件?(我从html中的用户处获得输入)谢谢!我试过了,但它只运行了小时,你能修改你的答案以包含分钟吗?如果我把它安排在一周后,会不会有问题?会不会有大毫秒数的问题?@jack我编辑了我的答案。它现在也考虑分钟。时间现在返回一个十进制数,因此它包含分钟。after()方法
令人担忧。由于明显的原因,实现不需要解析toLocaleString的输出,也可能不需要。new Date(new Date().toLocaleString(“en-US”,…)
function trigger(){ // Set here the date you want to schedule the one-time trigger var rawdate = "2020-07-29T21:30"; var today_D = new Date(new Date().toLocaleString("en-US", {timeZone: "America/New_York"})); var scheduled_D = new Date(rawdate); var time_af = Math.abs(scheduled_D - today_D) / 36e5; ScriptApp.newTrigger("myFunction") .timeBased() .after(time_af * 60 *60 * 1000) .create(); }
new Date(rawdate)