GASでスプレッドシートにR1C1数式を複数設定するには「setFormulasR1C1(formulas)
」を利用する。
setFormulasR1C1(formulas)
数式の長方形グリッドを設定します(この範囲のディメンションと一致する必要があります)。数式は R1C1 表記で指定する必要があります。
https://developers.google.com/apps-script/reference/spreadsheet/range#setformulasr1c1formulas
スプレッドシートにR1C1数式を複数設定するGAS実行の様子
setFormulasR1C1(formulas)メソッドを利用して、スプレッドシートにR1C1数式を複数設定するGASを実行してみました。
setFormulasR1C1を設置することで
- R1C1形式の数式を複数の配列セルに設置する
といったことが可能です。
ただし、R1C1形式の指定を誤ると望んだ計算結果が受け取れなくなってしまうので、注意する必要があります。
またsetFormulasR1C1は、for文によるsetValue()でも問題なく数式を複数設置することが可能です。
スプレッドシートで範囲を保護する場合は、以下記事を御覧ください。
スプレッドシートにR1C1数式を複数設定するGAS
function setflormulasr1c1(){
//SpreadsheetAppを起動
let ss = SpreadsheetApp.getActiveSpreadsheet();
//0番目のシートを取得
let sht = ss.getSheets()[0];
// .inputBoxで値を入力してvalに格納
const val = Browser.inputBox("値を入力してください");
// valを数値へ変換してnumへ格納
const num = Number(val);
// 繰り返し処理で適当な値を4行分入力
for(let i =1;i<=4;i++){
sht.getRange(i,1).setValue(num);
sht.getRange(i,2).setValue(num+i);
}
//複数の数式を作成して各変数へ格納
const formula01 = "sum(R[0]C[-2]:R[0]C[-1])";
const formula02 = "average(R[0]C[-2]:R[0]C[-1])";
const formula03 = "min(R[0]C[-2],R[0]C[-1])";
const formula04 = "max(R[0]C[-2],R[0]C[-1])";
//数式を配列に格納
const formulas = [
[formula01],
[formula02],
[formula03],
[formula04]
];
//数式を設置する範囲を設定してcellに格納しA1形式でrangeに変更
const cell = sht.getRange(1,3,4,1);
const range = cell.getA1Notation();
//cell範囲にsetFormulasで配列の数式を設置
cell
.activate()
.setFormulas(formulas);
//数式設置の旨を掲載!
Browser.msgBox("セル範囲「"+range+"」に数式を設置しました");
}
setFormulasR1C1(formulas)のパラメーター
名前 | 型 | 説明 |
---|---|---|
formulas | String[][] | 数式の2次元配列(R1C1形式) |
setFormulasR1C1(formulas)の戻り値
Range - チェーン用の範囲。
スプレッドシートにR1C1数式を複数設定するまとめ
GAS×スプレッドシートにR1C1数式を複数設定するならsetFormulasR1C1(formulas)
メソッドを利用しましょう。