シートのデータを昇順・降順で並べ替えたい時は、フィルタ機能の「A→Zで並べ替え」「Z→Aで並べ替え」で実行できますが、それをコードから実行するということをやってみました。
事前準備
A列からC列に任意のデータを入力しておきます。
例として下記のようなデータを入力してみます。
1. ソートしたい範囲を指定します。
var range = sh.getRange("A2:C");
2. 基準にする列を2(B列)に指定して、昇順に設定(ascending: true)します。
range.sort([{column: 2, ascending: true}]);
コード.gs
function sort(){ var ss = SpreadsheetApp.getActiveSpreadsheet(); var sh = ss.getActiveSheet(); var range = sh.getRange("A2:C"); range.sort([{column: 2, ascending: true}]); }
コードを実行するまでの手順
1. コード.gsにコードを書いて保存します。
2. sortを実行します。
3. 許可を確認をクリックします。
4. 許可をクリックします。
B列を基準に、A列からC列のデータが昇順に並び変えられました。
おまけ
ソートする範囲を "A2:C" のような決め打ちではなく
シート内でデータが入っている範囲を自動で指定したくて
以下のようなコードを追加で書きました
このコードでは行が増えても列が増えても
A2から最終行、最終列を対象範囲にしてソートが行われます
"A2:C" の方が見た目で範囲がわかりやすいですが
こんな方法でもソートできます
コード.gsfunction sort() { var target_col = 1; var asc = true; var start_row = 2; var start_col = 1; var sh = SpreadsheetApp.getActiveSheet(); var last_col = sh.getLastColumn(); var last_row = sh.getLastRow(); var num_rows = last_row - (start_row - 1); var num_cols = last_col - (start_col - 1); var range = sh.getRange(start_row, start_col, num_rows, num_cols); range.sort([{ column: target_col, ascending: asc }]); } | 意訳この処理は以下を実行する ソートする基準の列を指定して 昇順にしたければtrue, 降順にしたければfalseにして ソートしたい範囲の先頭行を指定し(例では2行目) ソートしたい範囲の先頭列を指定し(例では1列目(A列)) 対象のシートを指定して(例では今開いているシート) データが入っている最終列を取得し データが入っている最終行を取得し 対象の行の数を取得し 対象の列の数を取得し 2行目の、1列目から、対象の行数、対象の列数を範囲に指定して ソートする 基準にする列はtarget_colで指定した列 昇順はascで指定したとおり |