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

时间:2019-12-27 14:29:07

标签: google-apps-script google-sheets google-sheets-formula

我正在寻找一个脚本,我可以在Google表格电子表格中使用该脚本,以使其扫描包含多个电子表格的文件夹(每周添加1个),并从指定范围的单元格中检索数据到每个表格的新行中电子表格,但文件夹中的每张纸只有一次。

我找到了这个答案:Google Sheets: Import folder range into Master Sheet

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

1 个答案:

答案 0 :(得分:0)

也许这样的事情可能有用:

//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'}

如果您希望以其他方式指定对象参数,请告诉我。