我有一个谷歌脚本功能,可以从谷歌电子表格中获取范围。
function getGrainWeights() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
return range = ss.getRangeByName("Brew_Grains");
}
此范围由另一个函数处理,该函数修改并添加范围中的值。
“Brew_Grains”是我的电子表格中的命名区域,但我想用一个离散范围替换它,例如“B2,C3,D10”等。这可能,还是有一些解决方法? 干杯
答案 0 :(得分:3)
除了使用getRangeByName(name)指定的范围外,您还可以通过以下方式获取范围。
您可以找到documentation。
<强>更新强>
您想要做的事情的解决方法可能是:
...
var ss = SpreadsheetApp.getActiveSpreadsheet().getSheets()[0];
var ranges = [];
var range = ss.getRange('B2:C3');
ranges.push(range);
range = ss.getRange('D10');
ranges.push(range);
processingFunction(ranges);
...
然后,您可以将数组(范围)传递给任何其他函数进行处理。
答案 1 :(得分:0)
你不能(据我所知)加入两个Range对象。但是,如果您有一个可在多维数组上运行的自定义函数,则可以将范围转换为数组并将其连接起来。
例如:
function SUM_RANGE_COLUMN(myRange,colIndex){
var val,sum=0;
for (var i=0;i<myRange.length;i++) if (val=myRange[i][colIndex]) sum+=val;
return sum;
}
function UNION(range1,range2){
return range1.concat(range2);
}
使用上述自定义功能,您可以在电子表格中写下:
=SUM_RANGE_COLUMN( UNION(E4:F5,E9:F12), 1 )
要将两个真实范围转换为数组,请使用getValues()
:
function joinRanges( range1, range2 ){
return range1.getValues().concat( range2.getValues() );
}