我已经写了一个利用Google的定时触发器的脚本。然而,我在让脚本在正确的时间触发时遇到了问题。我住在悉尼(格林尼治标准时间+10),每天中午需要脚本触发。
我已经进入并在电子表格设置,项目属性以及Google Drive的全局设置中设置了时区,但尽管如此,脚本并没有在正确的时间触发。它大约差6-5个小时。更令人沮丧的是,当我进入触发器管理面板时,时区被显示为太平洋时间(-8小时),而当我每隔一次登录时这还不够,它似乎很快就会更改为其他随机时间,如东部标准等(在触发器面板中)。
我甚至尝试过手动补偿时间差,但这也不起作用,理想情况下,这不是我想要走的路径,因为它会影响脚本被触发的日期(在美国东部时间是星期一,在悉尼这里是星期二),这会影响我正在运行的对日期敏感的数据库查询。
无论哪种方式,我现在都是一片空白,也想不出任何进一步的解决方案。我如何解决这个问题?
发布于 2015-05-21 03:13:09
我也遇到过这个问题。可能是因为我在旅行。设置电子表格的时区无济于事。设置脚本的时区也无济于事。
真正有帮助的是使用@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()指定时区--请参阅说明here。
运行此脚本后,可以使用GUI编辑器编辑触发器。此外,现在时区对于我使用GUI添加的新触发器是正确的--不确定这是因为脚本还是因为我现在回家了。
发布于 2014-04-23 03:52:01
手动添加触发器不会设置正确的时区,但可以通过代码添加:
在文件>项目属性> Time Zone.
中,
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();
}您应该会在“当前项目的触发器”视图中看到正确的时区。
发布于 2014-01-09 18:13:59
我以前被时区的差异所困扰,所以我花了一些时间来思考这个问题,但它有时确实会让我头疼!
看看我的一个触发器:我的谷歌账户和电子表格设置为伦敦时间(GMT+0),触发器设置为每天格林尼治标准时间凌晨4点触发,所以看看周三(1月8日):根据电子表格上的修订历史,最后一个触发器在周二(1月7日)太平洋时间晚上8点(格林尼治标准时间8)触发。这与它们在格林威治时间8日凌晨4点的预期中联系在一起(在我的情况下,查找8号的日历事件,因为它们存储在GMT /UTC中)。
如果您已将电子表格时间设置为悉尼(GMT+10),则触发器也应在您设置的本地时间触发。
因此,也许你只需要仔细检查一下,或者你可以创建一个测试Google帐户,然后从头开始设置一切,以防你错过了某个时区设置。
不要觉得我给了你太多,但希望这对你有所帮助。
https://stackoverflow.com/questions/21012402
复制相似问题