使用不同长度的多个导入范围

Use multiple importrange with different length

我是编码新手,但我正在尝试做一些对我来说非常困难的事情...

我有大约 50 个电子表格,我想从每个电子表格中导入一些数据。我成功地使用 while 自动导入数据,问题是,每个电子表格都有自己的长度,都从单元格 A20 开始,一直到列 T,但最后一个数字不同。我使用了固定数字 (250),但它会在数据之间创建空白行。

是否可以个性化范围选择,这样我就可以避免数据之间出现空白 space?或者有一些代码可以删除数据之间的空行?

到目前为止我的代码...

function funil_usando_FOR () {
  var spreadsheet = SpreadsheetApp.getActive();
  spreadsheet.getRange('A3').activate();

  i = 3
  while (true) {
    var range = spreadsheet.getRange("Z" + i);
    var value = range.getValue();

    if(value == "") {
      break;
    }

    spreadsheet.getCurrentCell().setFormula('=importrange("'+value+'", "NOVO FUNIL!A20:T250")');
    spreadsheet.getCurrentCell().offset(251, 0).activate();
    i++;
  }  
}

答案:

有多种方法可以让您获取最后一行数据,其中数据存在于 Google Sheet.

方法:

可能最简单的方法是使用Sheetclass的getDataRange()方法。此 returns 范围等于数据存在的维度:

var range = spreadsheet.getDataRange();

在上一个方法的基础上,如果不想获取范围,只想获取行数,可以调用返回的Range对象的getNumRows()方法:

var range = spreadsheet.getDataRange();
var lastRow = range.getNumRows();

您还可以使用 getLastRow() 方法获取此范围最后一行的整数值 - 此方法 returns 范围中的最后一行 - 但请注意 getNumRows(),而不是返回像 getDataRange() 这样的范围,它 returns 是一个整数,因此您仍然必须在您使用的 getRange() 方法中使用它:

var range = spreadsheet.getDataRange();
var lastRow = range.getLastRows();

此方法与上一个基本相同 - 尽管这是 Sheet class 的方法而不是 Range class 的方法。它的用例与returns中最后一行的整数值sheet中的方法相同。如果您只想要最后一行的值,这可能是最好的使用方式,因为要定义的内容较少,而且您不必从返回的范围中提取它:

var lastRow = spreadsheet.getLastRow();

参考文献: