5
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【kintone】テーブルの行を並び替える(ソートする)

Last updated at Posted at 2020-12-11

前回は、テーブルの値を変更する記事を書きましたが、
今回は簡単にできるテーブルの昇順並び替え機能を作ってみたいと思います。
昇順や降順に並び替えることを「ソート」と言いますので、
「ソート」という言葉を使って説明したいと思います💪
※昇順は1,2,3,・・・のような小さい順、降順は100,99,98,・・・のような大きい順の並び方です

アプリの準備

アプリのフィールド

フィールド種類 フィールド名 フィールドコード
スペース spbtn
テーブル 名簿 名簿

テーブルのフィールド

フィールド種類 フィールド名 フィールドコード
数値 行番号 行番号
文字列(1行) 名前 名前
その他お好みで・・・

JavaScriptを書く

編集画面のイベントにします。
ボタンをつけて、ボタンをクリックすると「行番号」順に並べ替える機能とします。

解説は後述します。

//編集画面開いたときは'app.record.edit.show'
kintone.events.on(['app.record.edit.show'], event => {
    //ボタンを置きたいスペースフィールドの情報を取ってくる
    const sp = kintone.app.record.getSpaceElement('spbtn');

    //ボタンを作る
    const btn = document.createElement('button');
    //ボタンに表示したいテキスト
    btn.textContent='ボタン';

    //スペースフィールドにボタンを追加する
    sp.appendChild(btn);

    //ボタンをクリックしたときの動作
    btn.onclick=()=>{
        const obj = kintone.app.record.get();
        // 行番号順にソートする(行番号昇順に並び替える)
        obj.record.名簿.value.sort((a, b) => {
            //aの方の行番号が小さい時、a が先にくるようにする
            if (Number(a.value.行番号.value) < Number(b.value.行番号.value)) return -1;
            //aの方の行番号が大きい時、b が先にくるようにする
            if (Number(a.value.行番号.value) > Number(b.value.行番号.value)) return 1;
            return 0;
        });
        
        kintone.app.record.set(obj);
    }

    return event;

});    

ボタンをつける

ボタンを追加する方法についてはこちらをご覧ください
【kintone】アプリの「スペース」フィールドにボタンを設置する

サブテーブルを並び替える

「行番号」を元にソート(並び替える)機能です。

// 行番号昇順にソートする(行番号の小さい順に並び替える)
obj.record.名簿.value.sort((a, b) => {
    //aの方の行番号が小さい時、a が先にくるようにする
    if (Number(a.value.行番号.value) < Number(b.value.行番号.value)) return -1;
    //aの方の行番号が大きい時、b が先にくるようにする
    if (Number(a.value.行番号.value) > Number(b.value.行番号.value)) return 1;
    return 0;
});

obj.record.名簿.value は名簿テーブルの行が格納されている配列です。
obj.record.名簿.value[0] で1行目です。

配列をなにかのキーを元にソートする時は sort() メソッドを使います。

詳しくはこちらの「解説」のところに使い方が分かりやすく書かれています。
Array.prototype.sort()

Number()は文字列を数値に変換する関数です。

ちなみに、降順ソートしたい場合はこのように書き換えます。

    //aの方の行番号が大きい時、a が先にくるようにする
    if (Number(a.value.行番号.value) > Number(b.value.行番号.value)) return -1;
    //aの方の行番号が小さい時、b が先にくるようにする
    if (Number(a.value.行番号.value) < Number(b.value.行番号.value)) return 1;

return 負の数; のときは a, b という順番になり、
return 正の数; のときは b, a という順番になります。

動かしてみる

実際に動かしてみるとこのようになります。
※年齢フィールドを追加してみました。

222.gif

まとめ

今回のTipsを使うと、テーブルの行を思い通りの順番に並べ替えたい時に使えるかも!?

テーブルの行は「配列」として扱うことができます。
こちらのメソッドたちも使えますので、是非研究してみてくださいね^0^
参考:JavaScriptリファレンス:Array

5
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?