- setFormula関数を使ってセルに値を書き込む方法
- 複数のセルに一度に数式を書き込む方法
setFormula(formula)
指定された範囲(Range)に数式を書き込みます。
const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet()
// セルに数式を書き込む
sheet.getRange(1, 1).setFormula("=1+1")
実行後のスプレッドシート
公式ドキュメント
https://developers.google.com/apps-script/reference/spreadsheet/range#setformulaformula
引数
名前 | 型 | 説明 |
---|---|---|
formula | String | 書き込む数式 |
戻り値
値を書き込んだ範囲。Rangeオブジェクトで返却。
公式ドキュメント
https://developers.google.com/apps-script/reference/spreadsheet/range
setValueでの数式の書き込み
数式ではなく値を書き込むsetValueでも、数式を書き込むことができます。
「=」を先頭に付いた数式をsetValueの引数に指定して書き込むと、文字列ではなく通常の数式として書き込まれます。
const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet()
sheet.getRange(1, 1).setValue(10)
sheet.getRange(2, 1).setValue(20)
// 数式として書き込む
sheet.getRange(3, 1).setValue("=SUM(A1,A2)")
複数セルへの書き込み
Rangeを複数セル指定した場合はどうなるんでしょうか?
const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet()
// 複数セルに値を書き込む
sheet.getRange(1, 1, 2, 3).setFormula("=1+1")
実行後のスプレッドシート
Rangeに指定した2行3列分に同じ数式が格納されました。
複数のセルに同じ数式を書き込む場合は、このsetFormulaの使い方で早く処理ができます。
setFormulas(formulas)
指定された範囲(Range)に配列の数式を書き込みます。
const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet()
const array = [
["=50+50", "=10+10", "=SUM(A1:A2)"],
["=15+15", "=30+30", "=SUM(B1:B2)"]
]
// 配列の数式を書き込む
sheet.getRange(1, 1, 2, 3).setFormulas(array)
実行後のスプレッドシート
公式ドキュメント
https://developers.google.com/apps-script/reference/spreadsheet/range#setformulasformulas
引数
名前 | 型 | 説明 |
---|---|---|
formulas | String[][] | 書き込む数式の格納された2次元配列 |
書き込む2次元配列と範囲(Range)のサイズは一致させておく必要があります。
今回のサンプルコードでは、以下の通り2行3列で一致しているため想定通り数式の書き込みができています。
- Rangeの範囲は2行3列
- 配列の範囲は2行3列
Rangeの指定について詳しく知りたい場合は、こちらの記事を参照してください。
戻り値
数式を書き込んだ範囲。Rangeオブジェクトで返却。
まとめ
以上、GASを使ってスプレッドシートに数式を書き込む方法でした。
最後まで読んでいただきありがとうございました!
setValue関数でも数式を書き込めることからあまり活用する機会がない関数ですが、あえて使用することで明示的に数式を書き込む意図をスクリプトを読む人に伝えることができます。
使う場面に応じて適切に使い分けをしていきましょう。
このブログでは断片的な説明になってしまっていますが、本書は幅広いGASの内容が網羅的に学べる本です。イチから学びたい方は是非読んでみてください。
すでにGASをある程度マスターした方にも辞書的に手元に置いておくと便利です。
GASを使ってスプレッドシートに数式を書き込むsetFormula関数を紹介します