我正在使用Google Apps脚本尝试获取一系列日期并将其粘贴到Google电子表格的单元格中。
我能够将数据放入数组中,当我使用记录器时,我可以看到日期正在递增,就像array.length一样。
当我使用.setValues将数组的内容粘贴到电子表格中时,我在每个单元格中都得到相同的值。 (代码中的oldestDate只是之前设置的另一个日期变量。它是使用new Date(date string)
构造函数创建的,因此是一个有效的日期。
var today = new Date();
var testDate = new Date(oldestDate);
Logger.log(oldestDate);
Logger.log(testDate);
Logger.log("Loop Starts");
var storage = [];
var cols=0
while (Date.parse(testDate) < Date.parse(today))
{
storage.push(testDate);
Logger.log(testDate); //This is giving the same output as vvvvv
Logger.log(storage[cols]); //This is giving the same output as ^^^^^
Logger.log("Storage Length: "+storage.length); //This is incrementing
testDate.setDate(testDate.getDate() +1);
cols++;
}
var expensesDump = expenses.getSheetByName("Dump");
expensesDump.getRange(1, 1, 1, cols).setValues([storage]); //This is populating every cell with "27/05/2013"
答案 0 :(得分:1)
当您将对象(在本例中为日期对象)推入数组时,您正在推送对该对象的引用:
Do objects pushed into an array in javascript deep or shallow copy?
该链接中的第二个答案表明,如果将新对象分配给push()引用的变量,则它与之前的push()调用“断开连接”。因此,解决方案可能是(在while循环内):
testDate = new Date(testDate);
testDate.setDate(testDate.getDate()+1);