0

我正在使用Google Apps腳本嘗試獲取日期數組並將其粘貼到Google Spreadsheet的單元格中。從數組中設置Google Spreadsheet單元格值,但所有值都相同

我能夠將數據獲取到數組中,並且當我使用記錄器時,我可以看到日期正在遞增,就像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" 

回答

1

當你把一個對象(在這種情況下,約會對象)到一個數組,你正在推動一個參考該對象:

Do objects pushed into an array in javascript deep or shallow copy?

在該鏈路的第二回答表明,如果一個新的對象被分配到由推()所引用的變量,則它是「與以前的push()調用斷開連接「,因此解決方案可能是(在while循環中):

testDate = new Date(testDate); 
testDate.setDate(testDate.getDate()+1); 
+0

完美!感謝AdamL。 – kxm

相關問題