2

Google スプレッドシートから範囲を取得する Google スクリプト関数があります。

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

(私が知る限り) 2 つの 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 )

2 つの実際の Range を配列に変換するには、次を使用しますgetValues()

function joinRanges( range1, range2 ){
  return range1.getValues().concat( range2.getValues() );
}
于 2016-02-19T17:48:13.467 に答える