GoogleAppsScriptでスプレッドシートのセルをソートする方法(sortメソッド)

Google Apps Script(GAS)にはスプレッドシートのセルをソートするメソッドがあり、データの整理を行うことが可能です。

今回、GASを使ってスプレッドシートのソートを行う方法を解説します。

スプレッドシートでソートは頻繁に利用

スプレッドシートで色々なデータ入力やデータ処理を行っていると、もはやソートは必須機能です。

ソートというのは並び替えことで、ルールに沿ってデータを並び替えることです。

スプレッドシートではA-Z順(昇順)、Z-A順(降順)の2種類のソートが利用できます。

スプレッドシートでソート!昇順A-Zや降順Z-Aで並び替える方法(複数条件も)

例えば、価格表などの場合、値段の安いものから高い順にソートして並び替えたりします。

並び替えることで、データ自体を見やすくする効果やデータの構造理解が進みます。

このように表計算ソフトでは、ソートを行う頻度はとても高いです。

GASでもスプレッドシートのソートが可能

そんな頻度の高いスプレッドシートのソートは、Google Apps Script(GAS)でも実行することができます。

通常のGASコードにソート処理を組み込むと、forループなどの繰り返し処理が必要になります。

しかし、スプレッドシート用に用意されているソート用メソッドを使えば、一発でソートが実行できます。

そのため、GASではスクリプトで処理したデータをスプレッドシートに書き込んだ後、スプレッドシート上でソートして並び替えるといった処理をよく行います。

GASでソートするためのsortメソッド

Google Apps Scriptでスプレッドシートのソートを行うために、sortメソッドを使用します。

Range.sort(sortSpecObj)

スプレッドシートのRangeクラスのオブジェクトでsortメソッドが利用できます。

引数としては、ソートの条件を表すオブジェクトを指定します。

例えば、B列(2列目)の値を元に昇順でソートする場合は以下のように記述します。

Range.sort({column: 2, ascending: true})

1つ目のcolumnにソート条件の列(A列なら1、B列なら2)を指定し、2つ目のascendingで昇順(true)か降順(false)を指定します。

GASでスプレッドシートを読み込んだ後、getRangeなどでセル範囲を取得後にsortメソッドが実行できます。

スプレッドシートをソートするGASのサンプルコード

実際にスプレッドシートのサンプル表でGoogle Apps Scriptによるソートを行うサンプルコードを解説します。

あらかじめ用意してスプレッドシートの表を、GASでE列の金額をキーにして降順で並び替えてみます。

function sortSpreadsheet(){
//スクリプトが紐づくスプレッドシートのアクティブなシートを読み込む
let mySheet = SpreadsheetApp.getActiveSheet();
//シート内でソートしたいセル範囲をgetRangeで指定する
let data = mySheet.getRange(2, 1, 9, 7);
//列Eを基準に降順でソートする
data.sort({column: 5, ascending: false});
}

サンプルコードを実行すると、スプレッドシートの表の順番が変わり、金額の大きい順に並び変わりました。

ascendingを「true」にすると、金額が小さい順(昇順)にソートすることも可能です。

sortメソッド使用時はセル範囲に注意

なお、GASのsortメソッドを利用する際には、利用元のRangeオブジェクトのセル範囲に注意が必要です。

sortメソッドで引数に指定するcolumnの数値が、セル範囲に含まれていない場合はエラーするからです。

「Exception: 範囲外のセル参照です」というエラーメッセージが表示され、実行できません。

また、sortメソッドでは、Rangeオブジェクトの指定したセル範囲しかソート対象となりません。

そのため、想定通りソートできない場合は、getRangeメソッドでのセル範囲が正しく設定されているか確認しましょう。

まとめ・終わりに

今回、Google Apps Script(GAS)でスプレッドシートのシートに格納されたデータをソートする方法を紹介しました。

セル範囲を表すRangeオブジェクトでsortメソッドを使うことで、スプレッドシートのソートができます。

sortメソッドを使うことで、GASのコードで昇順・降順といったデータを並べ替える処理を実装する必要がありません。

sortメソッドを活用し、GASで見やすいスプレッドシートに整形しましょう。