2

我有一个谷歌脚本函数,可以让我从谷歌电子表格中获取一个范围。

function getGrainWeights() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  return range = ss.getRangeByName("Brew_Grains");
}

然后这个范围由另一个函数处理,该函数修改和更新范围中的值。

“Brew_Grains”是我电子表格中的一个命名范围,但我想用离散范围替换它,例如“B2、C3、D10”等。这可能吗,还是有一些解决方法?干杯

4

2 回答 2

3

除了使用getRangeByName(name)的命名范围之外,您还有以下获取范围的方法。

获取范围

您可以找到文档

更新

您想要做的解决方法可以是:

  ...
  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);
  ...

然后,您可以将数组(范围)传递给任何其他函数进行处理。

于 2013-08-16T12:26:31.243 回答
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() );
}
于 2016-02-19T17:48:13.467 回答