我已经输入了谷歌电子表格特定的日期,电子邮件应该发送。我有一个脚本,它将电子表格中的值获取到(1)比较“日期电子邮件应该发送”是否等于今天,如果是,运行脚本或(2)输入到电子表格的今天的日期,即“电子邮件发送日期”。
我看到记录器报告比实际在电子表格中的日期晚了一天。示例:电子表格显示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天。
我尝试过的:
=today())引用“今天的日期”,而不是通过new Date ()脚本。这仍然是问题的根源。当脚本记录“日期电子邮件被发送(今天)”回到电子表格,它显示为1天后。其他选项? 关于Google脚本问题的答案#6和Sergi的回答再次建议将其转换为字符串。有人能解释(1)这样做有什么区别吗?(2)如果引用一个单元格值而不是new Date,我将如何编写它。在定义FUS1变量之后,情况会是这样吗?
Utilities.formatDate(sheet.getRange("A1:A1").getValue(), FUS1 , "MMM-dd-yyyy h:mm a");谢谢!!
发布于 2015-03-16 18:05:39
我想我可能已经找到了我自己问题的答案。此报告的谷歌脚本问题# 1035表示formatDate实用程序正在错误地从电子表格读取日期。
这个答案和线程中的这个答案专门提供了一个解决方案,该解决方案目前似乎正在工作。具体来说,我们必须使用特定的时区名称(如维基百科中的这里 ),而不是使用时区格式"GMT-6:00“或"GMT-”的任何变体。所以,对于中央时间,我已经输入了这个,似乎已经修复了我的问题。如果这个修补程序不起作用,我会向您报告。
var emailDate = Utilities.formatDate(sheet.getRange("A1:A1").getValue(), "US/Central", "MM-dd-yyyy");发布于 2015-03-12 23:14:05
当您在Google工作表的单元格中键入日期时,它不会自动记录当前时间。当您在工作表单元格中手动键入日期时,时间设置为0:00:00。一天中什么时候不重要,如果只输入日期,时间设置将始终是0:00:00。因此,您在代码中使用的任何时区设置(试图影响hour )都会影响相对于0记录时间的时间。因此,除非您显式地键入当前时间以及日期,否则在手动输入日期时,时间将被设置为0:00:00。
如果希望在将日期放入单元格时记录时间,则可以在单元格中输入一个函数:
=now()然后复制单元格,并粘贴,仅用于特殊值。
否则,您将需要手动键入的时间和日期。您可以通过将单元格的日期/时间格式更改为Date time来测试这一点。
因此,这个问题可能与您的代码无关。
发布于 2021-04-15 05:22:13
到目前为止,Google支持为您创建的每个工作表设置时区。
我通过文件>电子表格设置>地区修复了这个问题,并确保它符合我的本地时间。我的约会对象离我只有2小时了,这让我发疯了。
我的预感是,Google脚本编辑器根据浏览器当前的本地日期/时间正确地计算了新的Date()对象,而电子表格则默认为不同的时区。对我来说,这是东部时间。
https://stackoverflow.com/questions/29020486
复制相似问题