スプレッドシートに数式を書き込む | setFormula()【GAS】

たけだ

GASを使ってスプレッドシートに数式を書き込むsetFormula関数を紹介します

💡この記事でわかること
  • 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

引数

名前説明
formulaString書き込む数式

戻り値

値を書き込んだ範囲。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

引数

名前説明
formulasString[][]書き込む数式の格納された2次元配列

書き込む2次元配列と範囲(Range)のサイズは一致させておく必要があります。

今回のサンプルコードでは、以下の通り2行3列で一致しているため想定通り数式の書き込みができています。

  • Rangeの範囲は2行3列
  • 配列の範囲は2行3列

Rangeの指定について詳しく知りたい場合は、こちらの記事を参照してください。

戻り値

数式を書き込んだ範囲。Rangeオブジェクトで返却。

まとめ

たけだ

以上、GASを使ってスプレッドシートに数式を書き込む方法でした。

最後まで読んでいただきありがとうございました!

setValue関数でも数式を書き込めることからあまり活用する機会がない関数ですが、あえて使用することで明示的に数式を書き込む意図をスクリプトを読む人に伝えることができます。

使う場面に応じて適切に使い分けをしていきましょう。

GASをイチから学びたい方へ

このブログでは断片的な説明になってしまっていますが、本書は幅広いGASの内容が網羅的に学べる本です。イチから学びたい方は是非読んでみてください。

すでにGASをある程度マスターした方にも辞書的に手元に置いておくと便利です。