我已在 Google 电子表格上输入了应发送电子邮件的具体日期。我有一个脚本,它从电子表格中获取值,以(1)比较“应发送的日期电子邮件”是否等于今天,如果是,则运行脚本或(2)将今天的日期输入到电子表格中,即“日期”电子邮件已发送”。
我看到记录器报告比电子表格中实际日期晚 1 天。示例:电子表格显示 3/11/2015 ,记录器显示Tue Mar 10 22:00:00 PDT 2015, GMT-6:00, MM-dd-yyyy
。
这是夏令时的结果吗?我读过有人遇到与 DST 和脚本/触发器/电子表格相关的类似问题。
脚本项目和电子表格本身的时区均设置为 GMT-6(中部时间),因此不存在差异。 (据我所知)在时间改变之前我没有遇到这个问题。Session.getTimeZone()
尽管折旧返回正确的时区(GMT-6)。
如果我使用new Date()
它正确返回今天的日期。当我使用Utilities.formatDate(sheet.getRange("A1:A1").getValue(), "GMT-6", "MM-dd-yyyy");
(其中单元格 A1 包含日期)它在日志中报告为电子表格中显示的实际日期晚 1 天。
我尝试过的:
将时区格式设置为“GMT-6:00”而不是“GMT-6”没有什么区别,尽管用户 Sergi 建议进行更改here.
我尝试从电子表格中引用“今天的日期”(使用=today()
) 而不是通过脚本new Date ()
。这仍然会导致问题。当脚本将“电子邮件发送日期(即今天)”记录回电子表格时,它显示为晚了 1 天。
其他选择? 关于 Google 脚本问题的答案#6和塞尔吉的answer再次建议将其转换为字符串。有人可以解释一下(1)这样做有什么区别以及(2)如果引用单元格值而不是引用单元格值,我将如何编写它new Date
。定义FUS1变量后是这样吗?
Utilities.formatDate(sheet.getRange("A1:A1").getValue(), FUS1 , "MMM-dd-yyyy h:mm a");
谢谢你!!
我想我可能已经找到了我自己问题的答案。此次报道Google 脚本问题 #1035表明formatDate
实用程序错误地从电子表格中读取日期。
这个答案并且这个答案在该线程中专门提供了一个当前似乎有效的解决方案。具体来说,不能使用时区格式“GMT-6:00”或“GMT-”的任何变体,而是必须使用特定的时区名称(如发现的那样)here来自维基百科)。所以,对于中部时间,我输入了这个和它seems解决了我的问题。如果此修复程序不起作用,我会报告。
var emailDate = Utilities.formatDate(sheet.getRange("A1:A1").getValue(), "US/Central", "MM-dd-yyyy");
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)