[英]Merge data from specific range of all sheets in a folder to a master sheet
Do I have script that I am trying to get a specific range (single row ie AB2:AB10) from each sheet in a folder (getfolderbyid("jkhkkkkkkk") to copy to a specific master sheet getsheetbyID("lklklkjllj")我是否有脚本试图从文件夹中的每个工作表中获取特定范围(单行,即 AB2:AB10)(getfolderbyid("jkhkkkkkkkk") 以复制到特定的主工作表 getsheetbyID("lklklkjllj")
this is what I have but it is looping through all 5000 row of the source data sheet so is very slow /////////////////////////////////////////// function getGaccountsDatafrom() {这就是我所拥有的,但它循环遍历源数据表的所有 5000 行,所以非常慢 //////////////////////// ////////////// function getGaccountsDatafrom() {
var folder = DriveApp.getFolderById("folderID");
var filesIterator = folder.getFiles();
*var file;
var fileType;
var ssID;
var combinedData = [];
var data;
while(filesIterator.hasNext()){
file = filesIterator.next();
fileType = file.getMimeType();
if(fileType ==="application/vnd.google-apps.spreadsheet"){
ssID = file.getId();
data = getDataFromSpreadsheet(ssID);
combinedData = combinedData.concat(data);
} //if end here
}// while ends here
var ws = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("DATA");
ws.getRange("A2:AQ").clearContent();
ws.getRange(2, 1, combinedData.length, combinedData[0].length).setValues(combinedData);
}
function getDataFromSpreadsheet(ssID){
var ss=SpreadsheetApp.openById(ssID);
var ws = ss.getSheetByName("DATA");
var data = ws.getRange("CG3:DW3"+ ws.getLastRow()).getValues();
return data;
}////////////////////////////////////////////////////
Hmm... the code is not "looping through all 5000 row of the source data sheet" but iterating files in a folder and getting data from each file separately.嗯...代码不是“循环遍历源数据表的所有 5000 行”,而是迭代文件夹中的文件并分别从每个文件中获取数据。 That is what makes it run slow, and I do not know if it can be made much faster.这就是它运行缓慢的原因,我不知道它是否可以做得更快。
The getDataFromSpreadsheet()
function gets too much data because of the superfluous 3
so the result will have blank rows in between. getDataFromSpreadsheet()
function 因为多余的3
而获取了太多数据,所以结果之间会有空白行。 Here is a quick fix:这是一个快速修复:
const data = ws.getRange('CG3:DW' + ws.getLastRow()).getValues();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.