如何使用 App-Script 迭代将数据输出到 Google 工作表
How to Iterate to output data to Google Sheets with App-Script
使用 Google 应用程序脚本,当我使用 Logger.log() 时,for 循环正确迭代并且我得到了每个值的结果。当我尝试将其输出到 google sheet 时,只有每个变量的最后一个值会针对 goals.length.
的数量一遍又一遍地输出
非常感谢任何帮助!
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
}
}
它不仅会打印最后的结果,还会不断地用新结果覆盖旧结果。
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);
}
使用 Google 应用程序脚本,当我使用 Logger.log() 时,for 循环正确迭代并且我得到了每个值的结果。当我尝试将其输出到 google sheet 时,只有每个变量的最后一个值会针对 goals.length.
的数量一遍又一遍地输出非常感谢任何帮助!
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
}
}
它不仅会打印最后的结果,还会不断地用新结果覆盖旧结果。
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);
}