从多个不相邻的单元格获取值

Rex*_*ker 2 google-sheets google-apps-script

我尝试从 Google Sheet 中的多个非相邻单元格获取值(作为数组)。

function myFunction() {
  var ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var arr = ['C1', 'C2', 'C4'];
  var val = ss.getRangeList(arr).getValues();
  Logger.log(val);
}
Run Code Online (Sandbox Code Playgroud)

我得到以下信息:

类型错误:ss.getRangeList(...).getValues 不是函数”。

非常感谢您的帮助。

Tan*_*ike 5

这个修改怎么样?

修改要点:

  • 不幸的是,类 RangeList 中没有方法getValues。我认为这就是你的问题的原因。
  • 为了从 的单元格中检索值['C1', 'C2', 'C4'],需要使用 的方法getRanges。至此,getValues就可以使用了。

当这些反映到你的脚本中时,它就会变成如下所示。

修改后的脚本:

function myFunction() {
  var ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var arr = ['C1', 'C2', 'C4'];
  var val = ss.getRangeList(arr).getRanges().map(range => range.getValues());  // Modified
  Logger.log(val);
}
Run Code Online (Sandbox Code Playgroud)
  • 在这种情况下,数组中的每个元素val都是二维数组。

笔记:

  • 在您的情况下,每个单元格都是一个单元格。所以我认为下面的脚本也可以使用。

      var val = ss.getRangeList(arr).getRanges().map(range => range.getValue());
    
    Run Code Online (Sandbox Code Playgroud)
  • 或者,为了从多个不相邻的单元格中检索值,我创建了Google Apps 脚本库的RangeListApp 。使用此功能时,您的脚本如下所示。

      var ss = SpreadsheetApp.getActiveSpreadsheet();
      var sheetName = ss.getActiveSheet().getSheetName();
      var arr = ['C1', 'C2', 'C4'];
      var rangeList = arr.map(e => `${sheetName}!${e}`);
      var val = RangeListApp.getSpreadsheet(ss).getRangeList(rangeList).getValues().map(e => e.values);
      Logger.log(val);
    
    Run Code Online (Sandbox Code Playgroud)

参考: