あるWebサイトからデータを取得していたのだけれど、なぜか日付順に並ばなくなりました。
そこで、データを取得してから並べ替えることに。
Google Apps Scriptで配列を並べ替える方法は以前調べたのだけれど、日付はその方法だとうまくいきません。
じゃあ、どうするか?が今回のテーマです。
日付順に並べ替えるには?
「JavaScript」の書き方がそのまま使えて、「ソート順を定義した関数」で参照する値を「new Date」で日付に変換するとできます。
※「new Date」の「D」だけは大文字じゃないと動きません。
function SortTwoDimensionalArrayByDate() {
let arr = [['e','2020-8-31'],['c','2020-8-1'],['a','2020-8-20'],['d','2020-8-10'],['b','2020-8-30']];
arr.sort(function(a, b) {return new Date(a[1]) - new Date(b[1]);} );
console.log(arr);
}
// ⇒ 結果 [ [ 'c', '2020-8-1' ], [ 'd', '2020-8-10' ], [ 'a', '2020-8-20' ], [ 'b', '2020-8-30' ], [ 'e', '2020-8-31' ] ]
降順に並べ替えたいときは、
「new Date(a[1]) - new Date(b[1])」を、
「new Date(b[1]) - new Date(a[1])」と、
aとbを入れ替えればOKです。
その他の書き方はこちらをご覧ください。 「Google Apps Script」で配列変数に入っているデータを並べ替えたくなりました。 パッと思いついたのは、「配列のデータをスプレッドシートに書き出して、シートの機能で並べ替える」ものでした ...
とっても簡単だった!Google Apps Scriptで配列を並べ替える方法
まとめ
ほんのちょっとの工夫で日付順に並べ替えることができました。
プログラムは知っているか知らないかだけで結果が大きく変わってくるので、調べることが大事だと改めて感じます。