使用Google应用脚本从多个工作表中获取数据

尝试从多个电子表格中获取数据。所有工作表都存储在同一文件夹中。必须仅通过文件名从特定文件中获取一张母版表中的数据。我写了下面的脚本。如果我们仅在指定范围内(在主表标签中)输入一个文件名(getSheetByName),但在尝试获取多个文件的数据时显示错误,则工作正常。 显示错误-“ TypeError:无法读取未定义的属性'length'” 以下是脚本-


function get_compiled_data() {


  var filelist = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("FileName");

  var filelists = filelist.getRange("A2:A").getValues();

  var folder = DriveApp.getFolderById("1li9hBP_W5gPkb_ASKqin4j1ZGEn1Gvji"); 

  var fileindex = folder.getFilesByName(filelists);

  var file;
  var filetype;
  var sheetID;
  var collect_data = [];
  var data;


  while (fileindex.hasNext()) {

    file = fileindex.next();

    filetype = file.getMimeType();

    if (filetype === "application/vnd.google-apps.spreadsheet"){

      sheetID = file.getId();

      data = getData(sheetID);

      data = data.map(function(r){return r.concat([file.getName()]);});

      collect_data = collect_data.concat(data);

    }  

  }

  var target = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Compiled_Data");
  target.getRange("A2:AX").clearContent();
  target.getRange(2, 1, collect_data.length, collect_data[0].length).setValues(collect_data);

}

function getData (sheetID) {

  var sheet = SpreadsheetApp.openById(sheetID);
  var tab = sheet.getSheets()[0];
  var data = tab.getRange("A3:AX" + tab.getLastRow()).getValues();
  return data;

}

预先感谢..

评论