スプレッドシートでGASを使う際には必要不可欠なgetRangeによる範囲選択を画像を使って解説していきます。
getRangeでの範囲選択
今回はこのような表を例に解説をしていきます。
単一セルを選択する
sheet.getRange(2, 1) // 行, 列
この場合、囲んだ範囲が選択されます。
複数行を一度に選択する
sheet.getRange(2, 1, 3) // 行, 列, 列数
この場合、最初の二つの引数で指定したセルから3番目の引数の列数分が選択されます。
複数行、列を選択する
sheet.getRange(2, 1, 3, 4) // 行, 列, 行数, 列数
この場合、最初の二つの引数で指定したセルから3、4番目の引数の行、列分が選択されます。文章だと分かりづらいので画像で確認してみましょう。
A1表記、R1C1表記で選択する
sheet.getRange("A1")
または、シートを含めて指定もできます。
spreadsheet.getRange("社員名簿!A2:B3")
複数の範囲を同時に選択する
sheet.getRangeList(["A2:B4", "D2:E4"])
配列の形式で範囲を指定します。
このとき、getRangeListの結果で取得されるのはRangeListというクラスです。
通常のRangeと違いそのままでは、値は取り出せないのでgetRangesを使って配列形式のRangeを取得してから値を取得します。
const ranges = sheet.getRangeList(['A2:B4', 'D2:E4'])
const values = ranges.getRanges()
console.log(values[0].getValues()) // [ [ 1, '社員太郎' ], [ 2, '社員次郎' ], [ 3, '社員三郎' ] ]
console.log(values[1].getValues()) // [ [ 1990, '社長室' ], [ 1995, '営業本部' ], [ 2010, 'システム本部' ] ]
RangeListのドキュメントはこちら。
https://developers.google.com/apps-script/reference/spreadsheet/range-list
データがある範囲を取得する方法
スプレッドシートのデータは日々増えていくものです、その都度GASの範囲選択の部分を書き換えていくのは手間がかかります。
データがある範囲をシートから調べて、自動的に指定するコードを紹介します。
sheet.getRange(1, 1, sheet.getLastRow(), sheet.getLastColumn())
getLastRow | データがある最後の行数を数値で返却する |
getLastColumn | データがある最後の列数を数値で返却する |
この図の場合は、getLastRowは4、getLastColumnは6が返却されます。
まとめ
今回は、スプレッドシートでGASを使う際には必要不可欠なgetRangeによる範囲選択を画像を使って解説しました。
今回紹介した以外にも範囲選択のやり方はありますが、よく使う基本的なやりかたは今回紹介した内容です。各関数の使い方と選択のイメージを覚えておくと素早くコードが書けるようになり開発スピードがアップしますので、ぜひ数をこなしてマスターしてみてください。
このブログでは断片的な説明になってしまっていますが、本書は幅広いGASの内容が網羅的に学べる本です。イチから学びたい方は是非読んでみてください。
すでにGASをある程度マスターした方にも辞書的に手元に置いておくと便利です。