Google Spreadsheet の GAS(Google Apps Script) でカスタム関数を作成するとき、以下の3とおり考えられます。
- Test("ABC")
直接文字列を指定する場合、式などもこちら - Test(A2)
単一のセルの場合 - Test(A2:A3)
範囲指定する場合
まず 1.Test("ABC") について、関数内ではそのまま値として与えられます。
次に 2.Test(A2) について、セルに格納されている値がそのまま与えられます。1.と同じです。
3.Test(A2:A3) ですが、関数には2次元配列で与えられます。以下のようにしてログ吐き出しするとわかります。
function Test(_range) {
Logger.log(JSON.stringify(_range));
}
サンプルでこれほど簡単なものはないでしょう。範囲内のセルを"1"にする関数です。戻り値は2次元配列のまま返すと同じ範囲の部分に値が入ります。
function FillOne(_range) {
var rng = _range;
if (!(rng instanceof Array)) { //配列ではないものを配列に変換
rng = [[rng]];
}
return rng.map(function (_row) { //行単位の処理
return _row.map(function (_cell) { //セル個別処理
return 1;
});
});
}
値を返す時、2次元配列のまま返せば、ArrayFormulaを使うときに便利です。
ArrayFormula(Test(A2:A3))