Google Apps Script (GAS) でスプレッドシートのセル範囲や最終の行や列の取得、また並べ替え等の方法を説明します。
SpreadSheetクラスのメソッドを利用した手順について説明します。
Google Apps Scriptの基本的な使い方については下記をご覧ください。
GASによるスプレッドシート操作の概要
GASでスプレッドシートを操作するための「SpreadSheetサービス」は、主に下記のクラスで構成されています。
クラス | 説明 |
---|---|
SpreadSheetApp | SpreadSheetサービスの親クラス |
Spreadsheet | スプレッドシートを操作するクラス |
Sheet | シートを操作するクラス |
Range | セル範囲を操作するクラス |
それぞれ下記のような位置付けになります。
「SpreadSheetApp」→「SpreadSheet」→「Sheet」→「Range」という順の階層構造になっています。操作対象に応じて、下の階層にたどってオブジェクトを取得して利用します。
このページでは、上記の中のSpreadSheetクラスの下記のメソッドについて説明します。
メソッド | 戻り値 | 説明 |
---|---|---|
getRange(a1Notation) | Range | 指定した位置のセル範囲を取得する |
getRangeList(a1Notations) | RangeList | 指定した位置の複数のセル範囲を取得する |
getDataRange() | Range | A1から最終行・最終列までのセル範囲を取得する |
getLastRow() | Integer | データのある最終行を取得する |
getLastColumn() | Integer | データのある最終列を取得する |
sort(columnPosition) | Sheet | 指定した列を基準に昇順で並べ替える |
sort(columnPosition, ascending) | Sheet | 指定した列・指定した順でデータを並べ替える |
appendRow(rowContents) | Sheet | 1行のデータを最終行の下に追加する |
指定したセル範囲を取得する
指定したセル範囲を取得するメソッドを説明します。
指定した位置のセル範囲を取得する:getRange(a1Notation)
指定したセル範囲を取得する方法です。A1表記またはR1C1表記で指定できます。
A1表記は、列の英字と行の数字の組み合わせでセルを参照する方法で、例えば”A1″、”B2″、”C3″のように表記します。
R1C1表記は、セルの行番号と列番号を使用してセルを参照する方法で、例えば”R1C1″、”R2C2″、”R3C3″のように表記します。
下記のように実行します。A1表記の場合の例です。
取得したセル範囲をgetValuesメソッドで表示しています。
1 2 3 4 |
function myFunction() { const testSpreadSheet = SpreadsheetApp.getActiveSpreadsheet(); console.log(testSpreadSheet.getRange("A1:B2").getValues()); } |
下記のファイルに対して実行すると、
下記の結果になります。
1 |
[ [ 'A1', 'B1' ], [ 'A2', 'B2' ] ] |
シートを指定しない場合は、アクティブなシートのデータを取得します。
シートを指定したい場合は、SheetクラスのgetRangeメソッドを利用するか、下記のようにシート名でシートを指定できます。
1 2 3 4 |
function myFunction() { const testSpreadSheet = SpreadsheetApp.getActiveSpreadsheet(); console.log(testSpreadSheet.getRange("シート2!A1:B2").getValues()); } |
指定した位置の複数のセル範囲を取得する:getRangeList(a1Notations)
指定した複数のセル範囲を取得する方法です。A1表記またはR1C1表記で指定できます。
下記のように実行します。A1表記の場合の例です。
取得したセル範囲リストからgetRangesメソッドでセル範囲を取得し、getValuesメソッドで内容を表示しています。
1 2 3 4 5 6 7 |
function myFunction() { const testSpreadSheet = SpreadsheetApp.getActiveSpreadsheet(); const testRangeList = testSpreadSheet.getRangeList([["A1:B2"], ["D4:E6"]]) for (const range of testRangeList.getRanges()) { console.log(range.getValues()); } } |
下記のファイルに対して実行すると、
下記の結果になります。
1 2 |
[ [ 'A1セル', 'B1セル' ], [ 'A2セル', 'B2セル' ] ] [ [ 'D4セル', 'E4セル' ], [ 'D5セル', 'E5セル' ], [ 'D6セル', 'E6セル' ] ] |
シートを指定しない場合は、アクティブなシートのデータを取得します。
シートを指定したい場合は、SheetクラスのgetRangeListメソッドを利用するか、下記のようにシート名でシートを指定できます。
1 2 3 4 5 6 7 |
function myFunction() { const testSpreadSheet = SpreadsheetApp.getActiveSpreadsheet(); const testRangeList = testSpreadSheet.getRangeList([["シート2!A1:B2"], ["シート2!D4:E6"]]) for (const range of testRangeList.getRanges()) { console.log(range.getValues()); } } |
A1から最終行・最終列までのセル範囲を取得する:getDataRange()
A1セルからデータのある最終行・最終列までのセル範囲を取得する方法です。
下記のように実行します。
取得したセル範囲をgetValuesメソッドで表示しています。
1 2 3 4 5 |
function myFunction() { const testSpreadSheet = SpreadsheetApp.getActiveSpreadsheet(); const testRange = testSpreadSheet.getDataRange(); console.log(testRange.getValues()); } |
下記のファイルに対して実行すると、
下記の結果になります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
[ [ '', '', '', '', '', '', '', '', '', '', '' ], [ '', '', '', '', '', '', '', '', '', '', '' ], [ '', '', '', '', '', '', '', '', '', '', '' ], [ '', '', '', 'D4セル', 'E4セル', '', '', '', '', '', '' ], [ '', '', '', 'D5セル', 'E5セル', '', '', '', '', '', '' ], [ '', '', '', 'D6セル', 'E6セル', '', '', '', '', '', '' ], [ '', '', '', '', '', '', '', '', '', '', '' ], [ '', '', '', '', '', '', '', '', '', '', '' ], [ '', '', '', '', '', '', '', '', '', '', '' ], [ '', '', '', '', '', '', '', '', '', '', '' ], [ '', '', '', '', '', '', '', '', '', '', '' ], [ '', '', '', '', '', '', '', '', '', '', '' ], [ '', '', '', '', '', '', '', '', '', '', '' ], [ '', '', '', '', '', '', '', '', '', '', '' ], [ '', '', '', '', '', '', '', '', '', '', '' ], [ '', '', '', '', '', '', '', '', '', '', '' ], [ '', '', '', '', '', '', '', '', '', '', '' ], [ '', '', '', '', '', '', '', '', '', '', 'K18' ] ] |
A1セルに値がなくてもA1からの範囲になるため、下記の範囲でセル範囲を取得します。
アクティブなシートのデータを取得します。
シートを指定したい場合は、SheetクラスのgetDataRangeメソッドを利用します。
最終行・最終列を取得する
最終行や最終列を取得するメソッドを説明します。
データのある最終行を取得する:getLastRow()
データのある最終行の行番号を取得する方法です。
下記のように実行します。
1 2 3 4 |
function myFunction() { const testSpreadSheet = SpreadsheetApp.getActiveSpreadsheet(); console.log(testSpreadSheet.getLastRow()); } |
下記のファイルに対して実行すると、
下記の結果になります。データの存在する一番下の行の行番号が表示されます。
1 |
18 |
アクティブなシートのデータを取得します。
シートを指定したい場合は、SheetクラスのgetLastRowメソッドを利用します。
データのある最終列を取得する:getLastColumn()
データのある最終列を番号で取得する方法です。
下記のように実行します。
1 2 3 4 |
function myFunction() { const testSpreadSheet = SpreadsheetApp.getActiveSpreadsheet(); console.log(testSpreadSheet.getLastRow()); } |
下記のファイルに対して実行すると、
下記の結果になります。データの存在する一番右の列を番号にしたものが表示されます。
1 |
11 |
アクティブなシートのデータを取得します。
シートを指定したい場合は、SheetクラスのgetLastColumnメソッドを利用します。
シートのデータを並べ替える
シートのデータを並べ替えるメソッドを説明します。
指定した列を基準に昇順で並べ替える:sort(columnPosition)
シートのデータを指定した列の昇順で並べ替えする方法です。
下記のように実行します。
1 2 3 4 |
function myFunction() { const testSpreadSheet = SpreadsheetApp.getActiveSpreadsheet(); testSpreadSheet.sort(3); } |
下記のファイルに対して実行すると、
下記の結果になります。
上記のように、特定のセル範囲内で並べ替えるのではなく、シート全体で並べ替えされます。
特定のセル範囲内で並べ替えたい場合は、Rangeクラスのsortメソッドを利用するとよいでしょう。
アクティブなシートのデータを取得します。
シートを指定したい場合は、Sheetクラスのsortメソッドを利用します。
指定した列・指定した順でデータを並べ替える:sort(columnPosition, ascending)
シートのデータを指定した列・指定した順で並べ替えする方法です。
下記のように実行します。第2引数をtrueにすると昇順、falseにすると降順になります。
1 2 3 4 |
function myFunction() { const testSpreadSheet = SpreadsheetApp.getActiveSpreadsheet(); testSpreadSheet.sort(3, false); } |
下記のファイルに対して実行すると、
下記の結果になります。C列で降順に並べ替えられます。
上記のように、特定のセル範囲内で並べ替えるのではなく、シート全体で並べ替えされます。
特定のセル範囲内で並べ替えたい場合は、Rangeクラスのsortメソッドを利用するとよいでしょう。
アクティブなシートのデータを取得します。
シートを指定したい場合は、Sheetクラスのsortメソッドを利用します。
1行のデータを最終行の下に追加する
1行のデータを最終行の下に追加するメソッドを説明します。
1行のデータを最終行の下に追加する:appendRow(rowContents)
データのある最終行の下にデータを1行追加する方法です。
下記のように実行します。
1 2 3 4 |
function myFunction() { const testSpreadSheet = SpreadsheetApp.getActiveSpreadsheet(); testSpreadSheet.appendRow(["追加1", "追加2", "追加3"]); } |
下記のファイルに対して実行すると、
下記の結果になります。データの存在する最終行の下に追加されます。
アクティブなシートのデータを取得します。
シートを指定したい場合は、SheetクラスのappendRowメソッドを利用します。
まとめ
Google Apps Script (GAS) でスプレッドシートのセル範囲や最終の行や列の取得、また並べ替え等の方法を説明しました。
GASは無料で利用できてとても便利なツールです。
Googleスプレッドシート等のGoogleアプリケーションを利用されている方は、GASを習得することで作業を大きく効率化できます。
GASの基本構文を知りたい方は、下記もご覧ください。