今回は「スプレッドシートの値のある範囲を選択する方法」をご紹介します。
コード例
const spreadsheet = SpreadsheetApp.getActiveSpreadsheet()
const sheet = spreadsheet.getActiveSheet()
sheet.getRange(1, 1, sheet.getLastRow(), sheet.getLastColumn())
用途と解説
このコードの使いどころは、「データが増えるスプレッドシート」の場合です。
例えば、こんな社員名簿のようなスプレッドシートがある場合。
このデータの範囲(Range)を取得する場合、一番単純に考えると次のようになります。
sheet.getRange(2, 1, 10, 5)
ひとまずはこのコードでデータが取得できそうです。しかし、もし新しいデータが増えて行が増えたら、列が増えたら毎回コードを修正する必要があります。
そんなとき、冒頭で紹介したコードの書き方が便利です。
sheet.getRange(2, 1, sheet.getLastRow() - 1, sheet.getLastColumn())
この書き方でRangeを取得すると、データの増加にコードを変更せずに対応することができます。
getLastRowとgetLastColumn
getLastRowとgetLastColumnとは何でしょう。単品でそれぞれ何が返却されているのか確認します。
console.log(sheet.getLastRow()) // 11
console.log(sheet.getLastColumn()) // 5
- getLastRowはデータがある範囲の一番下の行番号
- getLastColumnは同じく一番右の列番号(アルファベットのEは5番目)
実行結果から上記のことがわかります。
そのため、getLastRow/getLastColumnで取得した値からヘッダの位置を引いた数をしていすることでデータ範囲を正しく取得することができています。
(今回は一番上に一行ヘッダがあるので行から-1)
まとめ
今回は「スプレッドシートの値のある範囲を選択する方法」をご紹介しました。
スプレッドシートは台帳として使われることが多く、データが常に増え続けるものです。
今回のようなテクニックを使って、データの変更に対して柔軟に対応できるスクリプトを書いていきましょう。