0

使用Google App腳本時,當我使用Logger.log()for循環正確迭代時,我得到每個值的結果。當我嘗試將其輸出到Google工作表時,只有每個變量的最後一個值會反覆輸出,作爲goals.length的數量。如何使用App-Script迭代以將數據輸出到Google表格

任何幫助非常感謝!

function listGoals() { 
     var sheet = SpreadsheetApp.getActiveSheet(); 
     var filterList = Analytics.Management.Goals.list(accountId, webPropertyId, profileId) 
     var goals = filterList.items; 
     for (var i = 0, goal; goal = goals[i]; i++) { 
      var accountId = goal.accountId; 
      var propertyId = goal.webPropertyId; 
      var goalNumber = goal.id; 
      var goalName = goal.name; 

      Logger.log('accountId: ' + accountId); 
      Logger.log('profileId: ' + propertyId); 
      Logger.log('goal number: ' + goalNumber); 
      Logger.log('goal name: ' + goalName); 
      //Logger.log prints for each result 

      sheet.getRange(1,1,goals.length).setValue(goalNumber); 
      sheet.getRange(1,2,goals.length).setValue(goalName); 
      //this only prints out the last value of goalNumber and goalName to the sheet 

     } 
    } 

回答

1

它不僅會打印最後的結果,而且會一直覆蓋舊結果。 goals.length只有幫助,如果你再提供包含看着這樣的數值數組的數組:

[[1, "Goal 1"], 
[2, "Goal 2"]] 

如果你想打印出的goalNumber列表,並goalName你需要以抵消電池在每一個時間來寫。 像

sheet.getRange(1+i,1).setValue(goalNumber); 
sheet.getRange(1+i,2).setValue(goalName); 

爲了加快進程了一下,沒有做每一個目標,你可以存儲陣列中的ID名稱對數組和循環結束後做一個最終setValues呼叫兩個電話執行。

function listGoals() { 
    var sheet = SpreadsheetApp.getActiveSheet(); 
    var filterList = Analytics.Management.Goals.list(accountId, webPropertyId, profileId) 
    var goals = filterList.items; 
    var goalsToWrite = []; 

    for (var i = 0, goal; goal = goals[i]; i++) { 
    goalsToWrite.push([goal.id, goal.name]); 
    } 

    sheet.getRange(1, 1, goals.length, 2).setValues(goalsToWrite); 
} 
+0

非常感謝。這正是我想要的。感謝您也提供了setValues()的第二個例子。 –

相關問題