# 添付ファイル付きのテーブルの並び替えに関して

**URL:** <https://community.cybozu.dev/t/topic/8205>\
**Category:** kintone 開発相談\
**Created:** [2023 年 10 月 13 日午前 9:06 UTC](https://community.cybozu.dev/t/topic/8205 "2023-10-13T09:06:34Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![Kenichi35](https://avatars.discourse-cdn.com/v4/letter/k/f08c70/32.png) [@Kenichi35](https://community.cybozu.dev/u/Kenichi35)\
**Post date:** [2023 年 10 月 13 日午前 9:06 UTC](https://community.cybozu.dev/t/topic/8205/1 "2023-10-13T09:06:34Z")

</div>

レコード保存時にテーブルを日付順に並び替え（新しい日付が上）をしたいのですが、その際にテーブル上の添付ファイルも一緒に並び替えたいです。  
サブテーブルソートプラグインですと添付ファイルが並び替えできずにつまずいております。

初心者のためコード等対応方法を教えて頂けると助かります。  
宜しくお願い致します。

---

<div class="post-metadata">

**Author:** ![pomo](https://sea1.discourse-cdn.com/flex015/user_avatar/community.cybozu.dev/pomo/32/465_2.png) [@pomo](https://community.cybozu.dev/u/pomo)\
**Post date:** [2023 年 10 月 14 日午前 1:44 UTC](https://community.cybozu.dev/t/topic/8205/2 "2023-10-14T01:44:04Z")

</div>

レコードの追加編集等でテーブル内の添付ファイルの並べ替えはできない（認識違いでしたらすみません）と思われるので、

レコードの詳細画面に並べ替えのボタンを設置して、データを取得並べ替えをしたうえで、レコードの更新する形でjavascriptを組みました。

```javascript

// 並べ替え更新機能
const sortTable = async () => {
  if (!window.confirm("テーブルを並べ替えますか?")) return
  try {

    const res = await kintone.app.record.get()
    const record = res.record
    // こちらは任意のフィールド名を代入してください。
    const tableFieldName = "テーブル"
    const dateFieldName = "日付"

    let tableValue = record[tableFieldName].value

    // 日付基準で並び替え
    tableValue.sort((a, b) => {
      const dateA = new Date(a.value[dateFieldName].value);
      const dateB = new Date(b.value[dateFieldName].value);
      return dateA - dateB;
    })

    // 更新データ
    const body = {
      app: kintone.app.getId(),
      id: record["レコード番号"].value,
      record: {
        [tableFieldName]: {
          value: tableValue
        }
      }
    };

    // データの更新
    await kintone.api(kintone.api.url('/k/v1/record.json', true), 'PUT', body);
    // 画面の更新
    window.location.reload()
  } catch (err) {
    console.log(err, "並び替えのエラー")
  }

}

const addSortButton = () => {
  // 詳細画面
  kintone.events.on('app.record.detail.show', (event) => {
    const record = event.record;
    // メニュースペースにボタンの設置
    const el = kintone.app.record.getHeaderMenuSpaceElement()
    const button = document.createElement("button")
    button.innerText = "並べ替え"
    // ボタンにソート機能を設定
    button.addEventListener("click", sortTable)
    el.appendChild(button)

    return event;
  });

}

addSortButton()

```

---

<div class="post-metadata">

**Author:** ![Kenichi35](https://avatars.discourse-cdn.com/v4/letter/k/f08c70/32.png) [@Kenichi35](https://community.cybozu.dev/u/Kenichi35)\
**Post date:** [2023 年 10 月 15 日午後 6:21 UTC](https://community.cybozu.dev/t/topic/8205/3 "2023-10-15T18:21:39Z")

</div>

pomo様

夜分に失礼いたします。  
早速ありがとうございます！上手いこと機能しました！

やりたかったことが出来て大変助かりました！！

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/flex015/uploads/cybozu/original/1X/d5c841c3c5a6cb66eed514001c1b45147c9e1f4f.png) [@system](https://community.cybozu.dev/u/system)\
**Post date:** [2023 年 10 月 18 日午後 6:22 UTC](https://community.cybozu.dev/t/topic/8205/4 "2023-10-18T18:22:30Z")

</div>

このトピックはベストアンサーに選ばれた返信から 3 日が経過したので自動的にクローズされました。新たに返信することはできません。
