首页 > 解决方案 > 如何将包含 n 个电子表格的文件夹中的数据提取到一个电子表格中?

问题描述

我对以下代码有疑问。

function getData() {
  var files = DriveApp.getFolderById("1w86dQcDzTWC6qcCVGaEUo1tIuaaZkWEC").getFiles()
  while (files.hasNext()) {
    var file = files.next();
    var shoot = SpreadsheetApp.openById(file.getId());

    var sourceSheet = shoot.getSheets()[0];
    var sourceRange = sourceSheet.getRange("C2:C");
    var sourceValues = sourceRange.getValues();

    var sourceRange2 = sourceSheet.getRange("D2:D");
    var sourceValues2 = sourceRange2.getValues();

    var destSheet = SpreadsheetApp.getActive().getSheets()[0];
    var destRange = destSheet.getRange("D2:D");
    destRange.setValues(sourceValues);

    var destRange2 = destSheet.getRange("E2:E");
    destRange2.setValues(sourceValues2);
  }
}

它的作用是只从一个电子表格中获取数据,而不是从多个电子表格中获取数据,我需要帮助来获取所有工作表的数据而不覆盖数据

标签: google-apps-scriptgoogle-sheets

解决方案


好吧,终于我用getLastRow方法解决了这个小问题,下面我留下解决它的代码,希望有一天有人能提供帮助。

  function getData() {
   var files = DriveApp.getFolderById("1mHuYqG2aU9EFj8LE6T0DjzvZC7UK1vSj").getFiles()
   while (files.hasNext()) {
   var file = files.next();
   var bring = SpreadsheetApp.openById(file.getId());


  var sourceSheet = bring.getSheetByName("");


  var n = sourceSheet.getMaxRows();
  var srceRanSprint = sourceSheet.getRange(8, 2, n);
  var srceValSprint = srceRanSprint.getValues();

  var sourceRange2 = sourceSheet.getRange(2, 4, n);
  var sourceValues2 = sourceRange2.getValues();


  var destSheet = SpreadsheetApp.openById("").getSheets()[0];
  var lastRow = destSheet.getLastRow() + 1;


  var destRange = destSheet.getRange(lastRow, 4, n).setValues(sourceValues);

  var destRange2 = destSheet.getRange(lastRow, 5, n).setValues(sourceValues2);


}

}

推荐阅读