Google Apps Script の Range オブジェクトの sort メソッドの引数にオブジェクトが設定できますが、使い方がよくわからなかったので、使用方法を記載します。
昇順、降順指定して並び替えを行うことができます。


Sort の使い方

先行カラムの昇順でソートする

r.sort(1);指定します。

  // ソートする
  var s = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("convertedReport");
  var r = s.getRange(2, 1, s.getLastRow() - 1, s.getLastColumn() -1);
  r.sort(1);

配列で指定しても結果は同じです。

  // ソートする
  var s = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("convertedReport");
  var r = s.getRange(2, 1, s.getLastRow() - 1, s.getLastColumn() -1);
  r.sort([1]);

r.sort(0);指定すると、エラーとなり、範囲外の<wbr>セル参照ですなります。

  // ソートする
  var s = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("convertedReport");
  var r = s.getRange(2, 1, s.getLastRow() - 1, s.getLastColumn() -1);
  r.sort(0);

2カラム目を指定する

r.sort(2);2カラム目を指定できます。

  // ソートする
  var s = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("convertedReport");
  var r = s.getRange(2, 1, s.getLastRow() - 1, s.getLastColumn() -1);
  r.sort(2);

降順でソートする

range.sort({column: 1, ascending: false});降順ソート可能です。json オブジェクトを指定します。

  // ソートする
  var s = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("convertedReport");
  var r = s.getRange(2, 1, s.getLastRow() - 1, s.getLastColumn() -1);
  r.sort({column: 1, ascending: false});

複数列を指定する

r.sort([1,2]);複数列を指定することができます。

  // ソートする
  var s = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("convertedReport");
  var r = s.getRange(2, 1, s.getLastRow() - 1, s.getLastColumn() -1);
  r.sort([1,2]);

ソートの優先列は指定順序で決まります。

  // ソートする
  var s = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("convertedReport");
  var r = s.getRange(2, 1, s.getLastRow() - 1, s.getLastColumn() -1);
  // 2列目を優先してソートする
  r.sort([2,1]);

昇順、降順を指定する場合は、json オブジェクトを指定します。

  // ソートする
  var s = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("convertedReport");
  var r = s.getRange(2, 1, s.getLastRow() - 1, s.getLastColumn() -1);
  r.sort([{column: 1, ascending: false}, 
          {column: 2, ascending: true}
          ]);

わかりやすい書き方ではないですが、json オブジェクトと、列インデックス指定を混在させることもできます。

  // ソートする
  var s = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("convertedReport");
  var r = s.getRange(2, 1, s.getLastRow() - 1, s.getLastColumn() -1);
  r.sort([{column: 1, ascending: false},2]);


Range オブジェクトの取り出し方

sort 実行時にヘッダが並び替えされてしまったので、全指定の方法とヘッダを除外する方法を記載します。

全ての値を取得する

Sheet#getDataRange()使うとシートの値が設定された全範囲が取得できます。

  // ソートする
  var s = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("convertedReport");
  var r = s.getDataRange();

ヘッダ行を除外する

Sheet#getRange() で、開始位置を指定します。
ヘッダ行を除外して、全範囲を取得する場合は、開始行 2指定します。

  var s = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("convertedReport");
  var r = s.getRange(2, 1, s.getLastRow() - 1, s.getLastColumn() -1);


参考

以下、公式ドキュメントです。参考になりました。

以上です。

コメント