为定时触发器设置时区

时间:2014-01-09 05:41:36

标签: triggers google-apps-script timezone

我写了一个利用谷歌定时触发器的脚本。但是,我在让脚本在正确的时间触发时遇到问题。我居住在悉尼(GMT +10)并且需要每天中午开火的脚本。

我已经进入并在电子表格设置,项目属性以及Google云端硬盘的全局设置中设置了时区,但尽管如此,脚本仍然无法在正确的时间触发。它关闭了大约6-5小时。更令人沮丧的是,当我进入触发器管理面板时,时区被列为太平洋时间(-8小时),而且每次我登录时这还不够,似乎很快就会改变到其他一些随机时间标准等(在触发器面板内)。

我甚至尝试手动补偿时差,但这也没有奏效,理想情况下不是我想要的路径,因为它会影响脚本触发的那一天(它将是美国东部时间周一并且周二在悉尼)这对我正在运行的数据库查询有影响,这对日期敏感。

无论哪种方式,我现在画了一个空白,想不出任何进一步的解决方案。我该如何解决这个问题?

3 个答案:

答案 0 :(得分:4)

手动添加触发器不会设置正确的时区,但通过代码添加它确实有效:

  1. 将相应的时区设置为文件中的脚本>项目属性>时区。
  2. Add the trigger programmatically
  3. function addTrigger() {
      // main() will be called every day at 7am in your selected time zone
      var everyDay = ScriptApp.newTrigger("main")
          .timeBased()
          .everyDays(1)
          .atHour(7)
          .create();
    }
    

    你应该在"当前项目的触发器"上看到正确的时区。图。

答案 1 :(得分:4)

我也有这个问题。可能是因为我在旅行。设置电子表格的时区并没有帮助。设置脚本的时区也没有任何帮助。

使用@ Rodrigo脚本的修改版本有什么帮助:

protoc

您可以使用function addTrigger() { // main() will be called weekly on Monday at 16:00 in the specified time zone var everyWeek = ScriptApp.newTrigger("main") .timeBased() .everyWeeks(1) .onWeekDay(ScriptApp.WeekDay.MONDAY) .inTimezone("America/Los_Angeles") .atHour(16) .create(); } 指定时区 - 请参阅说明here

运行此脚本后,您可以使用GUI编辑器编辑触发器。此外,现在时区对于我使用GUI添加的新触发器是正确的 - 不确定是因为脚本还是因为我现在回家了。

答案 2 :(得分:0)

我之前被时区差异所困扰,所以我花了一点时间思考这个问题,但有时会让我头疼!

查看我的一个触发器:我的Google帐户和电子表格设置为伦敦时间(GMT + 0),并且我的触发器设置为每天格林威治标准时间凌晨4点,所以查看星期三(1月8日):根据电子表格上的修订历史记录,最后一次触发在星期二(1月7日)太平洋时间晚上8点(GMT-8)发生。与格林威治标准时间格林尼治标准时间上午4点(预计将在格林威治标准时间/ UTC中存储的日历事件一起发现)预期相关联。(/ p>

如果您的电子表格时间设置为悉尼(GMT + 10),那么触发器应该在您设置它们的当地时间开始。

所以也许您只需要仔细检查一下,或者您可以创建一个测试Google帐户并从头开始设置所有内容,以防您错过某个时区的时区设置。

不要觉得我给了你太多,但希望这有帮助。