こんにちは。エクスチュアの岩川です。
今までGASの基本的な操作であったり、スプレッドシートとの連携であったりをまとめました。
これからは本格的にスプレッドシートのデータを操作する方法の詳細を解説していきたいと思います。
今回は以下の記事の基礎知識の前提が必要ですのでもし準備方法などわからない方は以下の記事もご覧ください。
getRangeの使い方
さて、今までgetRangeの使い方としては
Sheetオブジェクト.getRange("セル番号")
という使い方をしていました。
これは操作したいセル番号を指定するというものでした。
しかし複数データを同時に操作したい場合はいちいちセル番号を指定するのは大変ですよね。
getRangeにはいくつか指定方法があります。
Sheetオブジェクト.getRange("セル番号")
Sheetオブジェクト.getRange(行番号, 列番号)
Sheetオブジェクト.getRange(行番号, 列番号, 行数)
Sheetオブジェクト.getRange(行番号, 列番号, 行数, 列数)
一つ一つ解説していきます。
◆Sheetオブジェクト.getRange(“セル番号”)
こちらはセルを直接指定しています。
指定したセルは1つのためセル内の値を取得する場合はgetValue()、セル内に値を代入したい場合はsetValue()を利用します。
現段階では少し意味がわからないかもしれませんが、後に違いがわかります。
◆Sheetオブジェクト.getRange(行番号, 列番号)
こちらは行番号と列番号を記述することによりセルを指定しています。
配列のように0番目から始まるわけではなく一番左上のA1は行番号1、列番号が1です。
そのためB3を指定したい場合は行番号が3、列番号が2です。
セル指定の呼び方が列・行の順なので間違いのないようにしましょう。
こちらもセル指定と同じようにセル指定が1つのためセル内の値を取得する場合はgetValue()、セル内に値を代入したい場合はsetValue()を利用します。
◆Sheetオブジェクト.getRange(行番号, 列番号, 行数)
さて、今までは1つのセルのみの指定になっていました。
この指定の方法は行番号・列番号で指定したセルから行数指定した数の分の複数セルをまとめて指定します。
以下のようなデータがあったとしましょう。
B1セルからB3セルの指定をしたい場合は
Sheetオブジェクト.getRange(1, 2, 3)
となります。
ここで今まで使用していたgetValue、setValueを使用した場合どうなるのでしょうか
・getValueの場合
Sheetオブジェクト.getRange(1, 2, 3).getValue()
こちらをconsole.logやLogger.logを使用して値を確認してみましょう。
すると結果は
バナナ
となりました。全てのデータが取れるわけではないようです。
・setValueの場合
Sheetオブジェクト.getRange(1, 2, 3).setValue("マスカット")
実行してみると
指定した全てのセルがマスカットという文字列になりました。
さて、複数のセルを指定したなら複数のデータを取得したり複数のデータをセットしたいですよね。
そこで利用するのが
getValues();
setValues();
の2つです。
一度マスカットに上書きしたデータを元のデータに戻しそれぞれを試してみましょう。
・getValuesの場合
Sheetオブジェクト.getRange(1, 2, 3).getValues()
すると取得されているデータが以下のようになりました
[ [ 'バナナ' ], [ 'ぶどう' ], [ 'レモン' ] ]
指定したセルが全て取得されており、データが配列であることがわかります。
・setValuesの場合
Sheetオブジェクト.getRange(1, 2, 3).setValues(array)
こちらは少し解説が長くなってしまいますので次回の記事で説明させていただきます。
※記事の更新次第リンクを貼りますのでご安心ください。
◆Sheetオブジェクト.getRange(行番号, 列番号, 行数, 列数)
前述したものは指定したセルから複数行を取得できるようになるものでした。
今回は更に列数も指定して更に広範囲を取得できるようにした記述です。
基本的な動きは前述したものと同じであるため簡単に説明をしますが
Sheetオブジェクト.getRange(1, 2, 3, 2)
と記述した場合、
この青い部分を指定したことになります。
言ってしまえば前述した
Sheetオブジェクト.getRange(1, 2, 3)
は
Sheetオブジェクト.getRange(1, 2, 3, 1)
の列数を省略したもの、と考えると良いかもしれません。
getRangeはセル操作の基本になるのでしっかり覚えていきましょう。
エクスチュアでは様々な企業様の基本的な悩みから高度な悩みまで丁寧にお手伝いいたします。
是非お気軽にお問合せください。