【问题标题】:What happens when you set a Month Timer Trigger to fire on the 31st for a month that doesn't have 31 days?当您将月份计时器触发器设置为在没有 31 天的月份的 31 日触发时会发生什么?
【发布时间】:2013-11-16 06:57:06
【问题描述】:

在 Google Apps 脚本项目中,您可以将时间驱动触发器设置为每月触发。 例如,每个月的 31 日。

如果设置为当月不存在的某一天,会有什么行为? 例如,如果将每月触发器设置为 31 日触发,它会在 2 月触发吗? 它最终会在那个月的最后一天触发吗?

【问题讨论】:

  • 15 天后试试看 :) 可能会在 1 号发生
  • 是的,我已经为这个月设置了一个,但希望有人能尽快为我解答。
  • 发回您的实验。但为了安全起见,我不会指望这种未定义的行为继续表现得像你会发现的那样。如果您想在月底处理事情,最好设置一个每日触发器,并在代码中首先检查它是否是该月的最后一天。每天只检查一次会消耗很少的配额。
  • 我已经将这个建议作为答案。

标签: google-apps-script


【解决方案1】:

为了安全起见,我不会指望这种未定义的行为继续表现得像今天发生的那样。

如果您想在月底处理事情,最好设置一个每日触发器,并在代码中首先检查它是否是该月的最后一天。每天只检查一次会消耗很少的配额。

将您上次处理的日期存储在脚本属性中,以了解您是否需要运行它。

【讨论】:

  • 感谢您的建议。这可能就是我最终会做的事情。
【解决方案2】:

我将触发器设置为在 31 日触发,但 11 月没有第 31 天,触发器根本没有触发。 此外,没有发送执行失败通知。

因此,Zig Mandel 的建议是设置当月最后一天触发器的最佳方式。

【讨论】:

  • 感谢分享您的结果,这对我个人很有帮助,因为我有几个触发器应该在每月的最后一天运行以执行定期报告功能。很高兴知道我必须围绕这种极端情况编写代码 - 没什么大不了的,但很高兴知道触发器的这种特殊行为。
【解决方案3】:

我将触发器设置为在每月 1 日午夜 1 点触发。

由于 Javascript Date.getMonth() 函数返回 0-11,这很好用,除了一月(0),必须更改为 12...

除非这是一个对时间非常敏感的问题,否则它应该满足您的需求...

【讨论】:

    猜你喜欢
    • 2015-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-24
    • 2019-01-11
    • 1970-01-01
    相关资源
    最近更新 更多