电子表格,用于自动扫描文件夹中的其他工作表并从特定范围导入数据



我正在寻找一个可以在 google 表格电子表格中使用的脚本,让它扫描包含多个电子表格的文件夹(每周添加 1 个(,并将指定范围单元格中的数据检索到每个电子表格的新行中,但文件夹中的每张工作表只能检索一次。

我找到了这个答案:谷歌表格:将文件夹范围导入主表

是否可以将其修改为脚本,而不是单独而是作为一个范围检查已经存在的值?因为某些值不可避免地会相同,但整行不太可能相同。

也许这样的事情可能会起作用:

//var fObj={nameArray:[],rangeArray:[],folderId:}
function scanAllSpreadsheetsInAFolder(fObj) {
var fObj=fObj || {nameArray:['Sheet1','Sheet2'],rangeArray:['A1:F100','G1:G100']};
var ss=SpreadsheetApp.getActive();
var msh=ss.getSheetByName('master');
var folder=DriveApp.getFolderById(fObj.folderId);
var files=folder.getFilesByType(MimeType.GOOGLE_SHEETS);
while(files.hasNext()) {
var file=files.next();
var ss=SpreadsheetApp.openById(file.getId());
for(var i=0;i<fObj.nameArray.length;i++) {
var sh=ss.getSheetByName(fObj.nameArray[i]);
for(var j=0;j<fObj.rangeArray.length;j++) {
var rg=sh.getRange(fObj.rangeArray[j]);
var vA=rg.getValues();
msh.appendRow(['Spreadsheet Name','Sheet Name','Range(A1 Notation']);
msh.appendRow([file.getName(),fObj.nameArray[i],rangeArray[j]]);
msh.getRange(msh.getLastRow()+1,1,vA.length,vA[0].length).setValues(vA);
}
}                          
}
}

注意:我还没有测试过这个。

fObj 是这样的对象:{nameArray:[],rangeArray:[],folderId:'folder id'}

如果您希望在不同的对象参数中指定,请告诉我。

最新更新