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);
を指定すると、エラーとなり、範囲外のセル参照です
となります。
// ソートする
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);
参考
以下、公式ドキュメントです。参考になりました。
以上です。
コメント