セルを操作する

【GAS】スプレッドシートでソートする

GASでスプレッドシートでソートするには「sort(sortSpecObj) 」を利用する。

sort(sortSpecObj)

指定した範囲内のセルを、列と指定した順序で並べ替えます。

https://developers.google.com/apps-script/reference/spreadsheet/range#sortsortspecobj

スプレッドシートでソートするGAS実行の様子

sort(sortSpecObj) メソッドを利用して、スプレッドシートでソートするGASを実行してみました。

sort(sortSpecObj)を実行することで、

  • 任意のセル範囲(列範囲)に対し、昇順・降順でソートを設定する

といった操作が可能です。

対象列の昇順・降順を設定する

対象列を絞って昇順・降順を設定するには、小括弧(パーレン)の中に中括弧(プレース)を書き、以下のように記述します。

range.sort({column:対象列数, ascending: false})

※rangeは列範囲である。

内訳は以下のとおり。

  • column:対象列
  • ascending: ture(昇順)or false(降順)

複数列を昇順・降順に設定する

複数列の昇順・降順設定は、小括弧の中に大括弧(ブラケット)、大括弧の中に中括弧を書き、以下のように記述します。

range.sort([{column: 2, ascending: false}, {column: 1, ascending: true}]);

同時に複数列の昇順・降順を設定するときに便利です。

スプレッドシートで特定列の最終行、特定行の最終列を選択する場合は、以下記事を御覧ください。

参照記事:【GAS】スプレッドシートで特定列の最終行、特定行の最終列を選択する

スプレッドシートでソートするGAS

function sort(){
    //SpreadSheetAppを起動してシートをアクティブに
     let ss = SpreadsheetApp.getActiveSheet();
    //行30・列10繰返しiを設置
     for(let i=1;i<=30;i++){
       for(let r=1;r<=10;r++){
         ss.getRange(i,r).setValue(i);
       }
     }
    //変数valにソートする列のアルファベットを入力
     const val = Browser.inputBox("ソートする列のアルファベットを入力してください");
    //変数rngにvalの先頭セルを格納
     const rng = ss.getRange(val+"1");
    //変数rw,clに変数rngの行・列数を格納
     const rw = rng.getRow();
     const cl = rng.getColumn();
    //変数lastrwにrngの最終行を格納
     const lastrw =rng.getNextDataCell(SpreadsheetApp.Direction.DOWN).getRow();
    //変数rangeにセル範囲を設定
     const range = ss.getRange(rw,cl,lastrw,1);
    //■sortメソッドでrange範囲を降順falseに設定
     range.sort({column:cl, ascending:false});
     
    }

sort(sortSpecObj)のパラメーター

名前説明
sortSpecObjObject並べ替えの基準となる列。
sort(sortSpecObj)のパラメーター

sort(sortSpecObj)の戻り値

Range - チェーン用の範囲。

スプレッドシートでソートするまとめ

GAS×スプレッドシートでソートするならsort(sortSpecObj)メソッドを利用しましょう。

関連記事:【GAS】スプレッドシートの文字を折り返す

関連記事:【GAS】スプレッドシートの文字の折返しを配列で設定する

関連記事:【GAS】スプレッドシートの文字の折返し方法を設定する

関連記事:【GAS】スプレッドシートの文字を斜めにする

-セルを操作する