【问题标题】:Selecting a range from within a named range google sheets script从命名范围谷歌表格脚本中选择一个范围
【发布时间】:2018-11-05 14:27:54
【问题描述】:

有没有办法从另一个命名范围内选择指定范围?

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

我可以通过使用 for 循环单独复制单元格来做到这一点,但这需要很长时间。

不幸的是 getRangeByName("firstRange").getRange(1,1,2) 无效,因为 getRange 不是 getRangeByName 的方法

谢谢

【问题讨论】:

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


    【解决方案1】:

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

    流程:

    • 您想要的值范围由offset() 从命名范围的源中检索。
      • 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);
    

    参考资料:

    如果这不是你想要的,我很抱歉。

    【讨论】:

    • 完美,这有助于清理大量代码,并且现在处理速度更快。非常感谢!
    • @Scott G 很高兴您的问题得到了解决。也谢谢你。
    【解决方案2】:

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

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

    这会从您的命名范围中获取所有值,然后映射它们并从第二列(本例中的 1 索引)中获取值

    希望对你有帮助。

    【讨论】:

      猜你喜欢
      • 2023-03-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-04
      • 1970-01-01
      • 2013-11-13
      • 2023-03-12
      • 1970-01-01
      相关资源
      最近更新 更多