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

たけだ

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

💡この記事でわかること
  • setValue関数を使ってセルに値を書き込む方法
  • 複数のセルに一度に値を書き込む方法

setValue(value)

指定された範囲(Range)に値を書き込みます。

const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet()

// セルに値を書き込む
sheet.getRange(1, 1).setValue("りんご")

実行後のスプレッドシート

公式ドキュメント

https://developers.google.com/apps-script/reference/spreadsheet/range#setvaluevalue

引数

名前説明
valueObject書き込む値

戻り値

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

公式ドキュメント

https://developers.google.com/apps-script/reference/spreadsheet/range

数式の書き込み

=を先頭に付いた数式を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).setValue("りんご")

実行後のスプレッドシート

Rangeに指定した2行3列分に同じ値が格納されました。

複数のセルに同じ値を書き込む場合は、このsetValueの使い方で早く処理ができます。

setValues(values)

指定された範囲(Range)に配列の値を書き込みます。

const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet()

const array = [
  ["みかん", "100円", 10],
  ["りんご", "200円", 15]
]

// 配列の値を書き込む
sheet.getRange(1, 1, 2, 3).setValues(array)

実行後のスプレッドシート

公式ドキュメント

https://developers.google.com/apps-script/reference/spreadsheet/range#setvaluesvalues

引数

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

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

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

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

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

戻り値

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

まとめ

たけだ

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

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

大量の値を書き込む場合はセル一つ一つにsetValueをするより、配列の形にまとめてsetValuesする方が処理が圧倒的に早くなります。

今後、処理速度の問題が発生した場合はこの使い分けの知識を思い出してみてください。

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

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

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