# チェックボックスフィールドの更新方法

**URL:** <https://community.cybozu.dev/t/topic/8473>\
**Category:** kintone 開発相談\
**Created:** [2023 年 12 月 14 日午前 2:52 UTC](https://community.cybozu.dev/t/topic/8473 "2023-12-14T02:52:23Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![zen\_ikeda](https://avatars.discourse-cdn.com/v4/letter/z/5fc32e/32.png) [@zen\_ikeda](https://community.cybozu.dev/u/zen_ikeda)\
**Post date:** [2023 年 12 月 14 日午前 2:52 UTC](https://community.cybozu.dev/t/topic/8473/1 "2023-12-14T02:52:23Z")

</div>

お世話になっております。  
KintoneのJavaScriptでのコーディングについて質問です。

やりたい事としては  
サブテーブルに条件をかけて、抽出したサブテーブル内にあるフィールドを更新したいです。

更新したいフィールドはチェックボックスで、値は『済』のみとなります。  
(※空欄の状態から、保存後に『済』にチェックが入る仕様となります)

サブテーブルの抽出はできているのですが、該当フィールドに対する更新処理と処理後の反映がうまくいきません。

こちらの原因としては何が考えられるでしょうか？  
お手数ですが、わかる方いらっしゃいましたらご教示の程お願いいたします。

(下記、コード抜粋)

```javascript
kintone.events.on('app.record.edit.submit.success', (event) => {

  const filteredRows = event.record.T_検品書明細.value.filter((row) => {
    return row.value.一括買取品番号.value >= 1 ;
  });

  filteredRows.forEach((row) => {
    row.value.ラベル明細.value = { value: '済' };
  });

  kintone.app.record.set(event.record);
  return event;

});

```

---

<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 年 12 月 14 日午前 7:25 UTC](https://community.cybozu.dev/t/topic/8473/2 "2023-12-14T07:25:44Z")

</div>

保存成功時でなく、保存するとき（~.submit.successでなく~.submit)イベントにしてあげてください。  
もしsuccessの段階で更新したい場合はrest apiで処理してあげるといいですね。

[レコード一覧画面のイベント](https://cybozu.dev/ja/kintone/docs/js-api/)

---

<div class="post-metadata">

**Author:** ![zen\_ikeda](https://avatars.discourse-cdn.com/v4/letter/z/5fc32e/32.png) [@zen\_ikeda](https://community.cybozu.dev/u/zen_ikeda)\
**Post date:** [2023 年 12 月 14 日午前 8:18 UTC](https://community.cybozu.dev/t/topic/8473/3 "2023-12-14T08:18:00Z")

</div>

回答いただきありがとうございます。  
保存する時のイベントを変更して実行してみました。  
alertによる確認で、『済』に更新されていることは確認できましたが、保存することができませんでした。

問題があるとすれば  
kintone.app.record.set(event.record);  
return event;  
に原因がありそうなのですが、eventの箇所をfilteredRowsに変更しても反映されません。  
私の認識では、上記コードで元のレコードに反映されると思っているのですが、なにか別の理由があるのでしょうか？

（下記、実行したコード）  
kintone.events.on(‘app.record.edit.submit’, (event) =\> {

```
const filteredRows = event.record.T_検品書明細.value.filter((row) => {
  return row.value.一括買取品番号.value >= 1 ;
});

filteredRows.forEach((row) => {
  row.value.ラベル明細.value = ['済'];
});

// 反映された「済」の数を表示する
const count = filteredRows.filter((row) => row.value.ラベル明細.value == '済').length;
alert(`ラベル明細「済」の数： ${count} 件`);

kintone.app.record.set(event.record);
return event;

```

});

---

<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 年 12 月 14 日午前 8:41 UTC](https://community.cybozu.dev/t/topic/8473/4 "2023-12-14T08:41:58Z")

</div>

kintoneのイベントハンドラー内でreturn eventで返すので、kintone.app.record.setは不要です。コンソールで確認していただくと  
Uncaught Error: You cannot call kintone.app.record.set() in handler or during processing a handler.  
と表示されてると思います。

kintone.app.record.set()はonclick や [onclick や onchange などの JavaScript のイベントハンドラー内で実行できます。](https://cybozu.dev/ja/kintone/docs/js-api/record/set-record-value/)例えば、ボタンを作ってそのボタンを押したときにレコードのデータを取得したり、更新したりするときに使います。

---

<div class="post-metadata">

**Author:** ![zen\_ikeda](https://avatars.discourse-cdn.com/v4/letter/z/5fc32e/32.png) [@zen\_ikeda](https://community.cybozu.dev/u/zen_ikeda)\
**Post date:** [2023 年 12 月 14 日午前 9:24 UTC](https://community.cybozu.dev/t/topic/8473/5 "2023-12-14T09:24:40Z")

</div>

コンソールでたしかに確認できました。  
イベントハンドラー内ではkintone.app.record.setができないんですね･･  
だいぶ苦戦してしまいました。  
大変勉強になりました！ありがとうございます。

---

<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 年 12 月 17 日午前 9:25 UTC](https://community.cybozu.dev/t/topic/8473/6 "2023-12-17T09:25:15Z")

</div>

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