我正在使用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());
我知道这可能是时区问题,但是尤其是在整个阵列中,我不知道该怎么办。
期望的行为:输出是源数据第一行的精确副本。
我希望这很清楚/很好。如果还有其他需要取消的操作,请告诉我。
答案 0 :(得分:1)
答案是通过尝试使用注释中的内容来完成的,所以我在回答这个问题实际上是为了说明发生的事情。
我已经在Google Sheets UI中签入了 File> Spreadsheet Settings ,并从脚本编辑器中签入了 File> Project Properties ,以验证时区设置是否为一样-他们是。
但是,当我从脚本编辑器运行getSpreadsheetTimeZone()
时,其输出为空白。我手动将时区更改为其他时区,然后将其改回,最后脚本识别了时区,问题得以解决。
我无法说出是什么原因导致Google表格的时区设置错误,只有正确设置才可以使一切正常。