ソートの罠(GAS)

スプレッドシートの範囲をソートしようと、ネットでやり方を調べた。 getRange()で範囲を指定してsort()関数で、カラム位置と昇順降順をセットするだけらしい。 キーが複数のときは、sort関数に喰わせるカラム位置と昇順降順の組を配列で突っ込めば良いみたい。 早速やってみても、全然上手く行かない。 ネットに書いてある通りなのに...。 検索ワードに『上手く行かない』を追加してググってみると、Yahoo!知恵袋に答えが見つかった。 ボクは、getRange()で選択した範囲での列番号だと思っていたら、なんとシート上の列番号を指定するらしい。 getRange()で'D1:G10'を指定して、D列をソートキーにする場合、1ではなく4を指定する必要がある。 最初にネットで見た例は、getRange()の範囲がA列からのものばかりだったからわからなかった。 ボクの感覚からすれば、選択した範囲の何列目を指定するべきだろうと思うのだけど、世間はそうでもないらしい。 シート上の列番号に修正すると、すんなりソートすることが出来た。 例によってコードを記す。

ダメなコード // セルの範囲を取得する let range = sheet.getRange('K3:Q10'); // 並べ替える range.sort([ {column:1, ascending:true}, {column:2, ascending:true}, {column:3, ascending:true}, {column:4, ascending:true}, ]); 上手く行くコード // セルの範囲を取得する let range = sheet.getRange('K3:Q10'); // 並べ替える range.sort([ {column:11, ascending:true}, {column:12, ascending:true}, {column:13, ascending:true}, {column:14, ascending:true}, ]);

--
はれ のち くもり

No comments: