从多个选项卡获取值列表并复制到另一个工作表中的列?

时间:2016-06-21 05:21:13

标签: google-apps-script google-sheets

我已经从stackoverflow上的搜索创建了一个脚本,并且到目前为止提出了这个:

function collectData(){
var ss = SpreadsheetApp.getActiveSpreadsheet()
var sheets = ss.getSheets();
var target = ss.getSheetByName("Export");

for ( i = 0; i < sheets.length; i++){  
var names = sheets[i].getRange("B1").getValue();    

Logger.log(names);

 }
}

这是按预期工作的,但我试图在另一张表中列出值。我已经尝试过copyTo和setValues并推送将值列表发送到特定工作表,但不断出现错误。

1 个答案:

答案 0 :(得分:0)

要在电子表格的某个范围内设置值,您需要将它们排列在一个双数组中。一行是[[x, y, z]],一列是[[x], [y], [z]]。既然你想要一个列,那么逻辑就是

var names = [];
for (var i = 0; i < sheets.length; i++){  
  names.push([sheets[i].getRange("B1").getValue()]); 
}
target.getRange(1, 1, names.length, 1).setValues(names);

参考:getRange

要改为换行,可以移动一些方括号:

var names = [];
for (var i = 0; i < sheets.length; i++){  
  names.push(sheets[i].getRange("B1").getValue()); 
}
target.getRange(1, 1, 1, names.length).setValues([names]);