从命名范围的Google表格脚本中选择一个范围

时间:2018-11-05 02:46:16

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

是否可以从另一个命名范围中选择一个指定范围?

例如,如果我有一个命名范围,则说“ firstRange”,而我只想从该范围内获取第二列,以复制到另一个命名范围。

我可以通过使用for循环分别复制单元格来完成此操作,但这需要很长时间。

不幸的是 getRangeByName(“ firstRange”)。getRange(1,1,2)无效,因为getRange不是getRangeByName的方法

谢谢

2 个答案:

答案 0 :(得分:0)

您可以获取命名范围,然后获取返回多维数组的值。然后,您可以解析出您正在寻找的值。例如

var parsed = SpreadsheetApp.getActiveSpreadsheet()
    .getRangeByName('namedRange')
    .getValues()
    .map(function(row) {
      return [row[1]];
    });

这将从命名范围中获取所有值,然后将它们映射并从第二列(在此示例中为1索引)获取值

我希望有帮助。

答案 1 :(得分:0)

这种方法怎么样?我认为您的情况有几个答案。因此,请将此视为其中之一。流程如下。

流量:

  • 所需的值的范围是由offset()从名为range的源中检索的。
    • getLastRow()用于命名范围时,返回的值是命名范围的最后一行。
  • 检索目标命名范围。
  • 将检索到的源范围复制到目标范围。

示例脚本:

在此示例脚本中,将firstRange命名范围的第二列复制到secondRange的命名范围。

var ss = SpreadsheetApp.getActiveSpreadsheet();

// Retrieve source range.
var sourceRange = ss.getRangeByName("firstRange");
var src = sourceRange.offset(0, 1, sourceRange.getLastRow(), 1);

// Retrieve destination range.
var destinationRange = ss.getRangeByName("secondRange");

// Copy from source range to destination range.
src.copyTo(destinationRange);

例如,如果要将复制的源范围复制到目标范围的第二列,请按如下所示修改var destinationRange = ss.getRangeByName("secondRange")

var destinationRange = ss.getRangeByName("secondRange").offset(0, 1, 1, 1);

参考文献:

如果这不是您想要的,对不起。