Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Triggers 设置定时触发器的时区_Triggers_Google Apps Script_Timezone - Fatal编程技术网

Triggers 设置定时触发器的时区

Triggers 设置定时触发器的时区,triggers,google-apps-script,timezone,Triggers,Google Apps Script,Timezone,我写了一个利用谷歌定时触发器的脚本。但是,我在让脚本在正确的时间启动时遇到问题。我住在悉尼(格林尼治标准时间+10),每天中午都需要脚本 我已经在电子表格设置、项目属性以及Google Drive的全局设置中设置了时区,但尽管如此,脚本并没有在正确的时间启动。大约6-5小时后关闭。更令人沮丧的是,当我进入触发器管理面板时,时区被列为太平洋时间(-8小时),因为这还不够,所以每次我登录时,它似乎很快会更改为其他一些随机时间,如东部标准等(在触发器面板内) 我甚至尝试过手动补偿时差,但这也不起作用,

我写了一个利用谷歌定时触发器的脚本。但是,我在让脚本在正确的时间启动时遇到问题。我住在悉尼(格林尼治标准时间+10),每天中午都需要脚本

我已经在电子表格设置、项目属性以及Google Drive的全局设置中设置了时区,但尽管如此,脚本并没有在正确的时间启动。大约6-5小时后关闭。更令人沮丧的是,当我进入触发器管理面板时,时区被列为太平洋时间(-8小时),因为这还不够,所以每次我登录时,它似乎很快会更改为其他一些随机时间,如东部标准等(在触发器面板内)

我甚至尝试过手动补偿时差,但这也不起作用,理想情况下,这不是我想要的路径,因为它会影响脚本被触发的日期(将在EST时间的星期一和悉尼的星期二),这会影响我正在运行的数据库查询,它是日期敏感的


不管怎样,我现在已经画了一个空白,想不出任何进一步的解决办法。我该如何解决这个问题呢?

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

看看我的一个触发器:我的谷歌帐户和电子表格设置为伦敦时间(GMT+0),我的触发器设置为每天早上4点GMT,所以看看周三(1月8日):根据电子表格上的修订历史,最后一个触发器在周二(1月7日)晚上8点(GMT-8)启动。这与它们在8日格林尼治标准时间上午4点按预期运行有关(在我的例子中,查找8日的日历事件,因为它们存储在格林尼治标准时间/UTC中)

如果您已将电子表格时间设置为悉尼(GMT+10),则触发器也应在您设置的本地时间触发

所以,也许你只需要再次检查一下,或者你可以创建一个测试谷歌帐户,从头开始设置一切,以防你错过了某个时区设置


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

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

  • 在文件>项目属性>时区中为脚本设置适当的时区
  • :
  • 函数addTrigger(){
    //main()将在所选时区的每天早上7点调用
    var daily=ScriptApp.newTrigger(“主”)
    .基于时间的()
    .每天(1)
    .atHour(7)
    .create();
    }
    

    您应该在“当前项目的触发器”视图中看到正确的时区。

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

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

    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();
    }
    
    您可以使用
    .inTimezone()
    指定时区--请参阅说明


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

    作为提示,尝试通过手动运行脚本记录一些内容,并检查日志中的时区。如果它与您的应用程序脚本项目和电子表格时区设置不同,则说明有问题。尝试删除触发器,然后在进行所需的时区设置后再次添加。如果需要帮助,您需要实际向我们显示脚本的相关部分。此外,悉尼不完全是+10。有时是+11。这取决于夏令时是否有效。有关详细信息,请参阅。这里是时区列表