我尝试从 Google 表格中的多个不相邻单元格获取值(作为数组)。
function myFunction() {
var ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var arr = ['C1', 'C2', 'C4'];
var val = ss.getRangeList(arr).getValues();
Logger.log(val);
}
我得到以下信息:
TypeError: ss.getRangeList(...).getValues is not a function".
非常感谢您的帮助。
最佳答案
这个修改怎么样?
修改点:
- 不幸的是,RangeList类中没有
getValues
方法。我认为这就是您出现问题的原因。 - 为了检索
['C1', 'C2', 'C4']
单元格中的值,需要使用getRanges
方法。这样就可以使用getValues
了。
当这些反射(reflect)到您的脚本中时,它会变成如下所示。
修改后的脚本:
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);
}
- 在本例中,
val
数组中的每个元素都是二维数组。
注意:
在您的情况下,每个单元格都是一个单元格。所以我认为下面的脚本也可以使用。
var val = ss.getRangeList(arr).getRanges().map(range => range.getValue());
或者,为了从多个不相邻的单元格中检索值,我创建了 RangeListApp Google Apps 脚本库。使用此功能时,您的脚本如下。
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);
引用文献:
关于google-apps-script - 从多个不相邻的单元格获取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63406274/