Google Spreadsheets中的读写日期

时间:2018-07-25 18:45:44

标签: javascript multidimensional-array google-apps-script google-sheets

我正在使用Google Apps脚本从一个Google Spreadsheet导入近30,000个日期到另一个。我从10,000张纸上导入的效果很好,但较大的那张纸则不能。对于较大的导入,所有日期都将导入为过去的1个日期,因此1/1/2018变为12/31/2017,依此类推。

我知道Javascript处理日期有些不同,所以我不确定为什么它在一个上失败而在另一个上工作。但大多数情况下,我不确定如何一次增加整个数组(实际上是数组的数组)。

当我在GAS调试器中检查日期值时,我注意到返回的日期为2018年1月1日,即Sun Dec 31 17:00:00 GMT-07:002017。工作表返回的是Mon Jan 01 2018年00:00:00 GMT-06:00。我检查了脚本文件和基础电子表格的属性,并且两者均设置为GMT-7。

编辑

前12行日期:
2018年1月1日
2018年1月1日
2018年1月1日
2018年1月1日
2018年1月1日
2018年1月1日
2018年1月1日
不适用
不适用
2018年1月1日
2018年1月2日

输出: 2017年12月31日
2017年12月31日
2017年12月31日
2017年12月31日
2017年12月31日
2017年12月31日
2017年12月31日
不适用
不适用
2017年12月31日
1/1/2018

我使用的代码是destination.getRange(1,7,lastRow+1).setValues(source.getRange(2,columns[0],lastRow+1).getValues()); 我知道这可能是时区问题,但是尤其是在整个阵列中,我不知道该怎么办。

期望的行为:输出是源数据第一行的精确副本。

我希望这很清楚/很好。如果还有其他需要取消的操作,请告诉我。

1 个答案:

答案 0 :(得分:1)

答案是通过尝试使用注释中的内容来完成的,所以我在回答这个问题实际上是为了说明发生的事情。

我已经在Google Sheets UI中签入了 File> Spreadsheet Settings ,并从脚本编辑器中签入了 File> Project Properties ,以验证时区设置是否为一样-他们是。

但是,当我从脚本编辑器运行getSpreadsheetTimeZone()时,其输出为空白。我手动将时区更改为其他时区,然后将其改回,最后脚本识别了时区,问题得以解决。

我无法说出是什么原因导致Google表格的时区设置错误,只有正确设置才可以使一切正常。

相关问题