0

Google Apps Script를 사용하여 날짜 배열을 가져 와서 Google 스프레드 시트의 셀에 붙여 넣으려고합니다.어레이에서 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" 

답변

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

관련 문제