# カスタマイズしたレコード一覧画面からチェックを入れたレコードだけ一括で更新したい

**URL:** <https://community.cybozu.dev/t/topic/54>\
**Category:** kintone 開発相談\
**Created:** [2022 年 9 月 13 日午前 6:21 UTC](https://community.cybozu.dev/t/topic/54 "2022-09-13T06:21:12Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![Legacy\_Account1639](https://avatars.discourse-cdn.com/v4/letter/l/ce7236/32.png) [@Legacy\_Account1639](https://community.cybozu.dev/u/Legacy_Account1639)\
**Post date:** [2022 年 9 月 13 日午前 6:21 UTC](https://community.cybozu.dev/t/topic/54/1 "2022-09-13T06:21:12Z")

</div>

お世話になっております。

今回、レコードの一括更新を行いたいのですが、エラー番号400が発生してしまい、正常に動作しません。

詳細を記しますので、ご教授いただければ幸いです。

**・目的**

製造番号「AAA」で購入していた部品を製造番号「BBB」に変更する際に、レコード数が多いため、レコード一覧から変更したいものだけ選んで一括で変更したい

**・できていること**

レコード一覧にチェックボックスを設置する

一括更新用のボタンを配置し、押したときにチェックを入れたレコードのレコード番号を取得する

入力欄を配置し、変更先の製造番号を入力できるようにする

**・発生するエラー**

レコード一括更新の命令実行時にエラー400が発生

ディベロッパーツールで見ると、idにでたらめな文字列が入っており、入力内容が正しくありませんと表示されます

**・エラーの発生する箇所のソースコード**

一覧画面に追加したボタンを押した処理だけを記述します

```
// ボタンクリック時の処理
      IndexButton.onclick = () => {
          var recordIndexes = document.getElementsByName('checked-records');
          var checked_index;
          var count = 0; //チェックを入れた数
          var changelist = Array(20); //チェックを入れたレコードのレコード番号の受け皿
          var NewSeiban; //新しい製造番号
          
          for(let i=0; i<recordIndexes.length; i++){
            if(recordIndexes[i].checked){
              //どこにチェックされてるか取得
              checked_index = recordIndexes[i].id.split('-')[2];
              // チェックの入った数と、チェックを入れたレコード番号を取得
              count++;
              changelist[i] = records[checked_index]['レコード番号']['value'];
              
            }
          }
          //チェック数が0なら処理しない
          if(count === 0){
            alert('変更するデータが選択されていません');
            return;
          }
        //新しい製造番号が入力されていない、または0なら処理しない
          if(InputText.value === '' | InputText.value === '0'){
          alert('変更する製造番号を先に入力してください');
            return;
          }else{
            //変更先の製造番号を取得
            NewSeiban = InputText.value;
          }
          
        //操作確認
          var result = confirm(count +' 件のデータの製番を変更します。よろしいですか？');
        if(result === true){
            var list = [];
            var check;
            //書き換えデータ作り
            for (let i = 0; i < count; i++) {
              var obj = {};
               obj["id"] = changelist[i];
               obj["製番"] = NewSeiban;
               list.push(obj);
            }
            
            var requestObj = {
                            "app": kintone.app.getId(),
                            "records": list
                          };

            kintone.api(kintone.api.url("/k/v1/records/status", true), "PUT", requestObj, function() {
            alert('製造番号を変更しました')
            });
        }else{
          alert('操作を中断します');
        }
      };

```

恐らく配列を用いて書き換えデータを作るところに問題があるのでしょうが、どのように修正すればいいか分かりません。

ご教授お願い致します。

---

<div class="post-metadata">

**Author:** ![Legacy\_Account2757](https://avatars.discourse-cdn.com/v4/letter/l/65b543/32.png) [@Legacy\_Account2757](https://community.cybozu.dev/u/Legacy_Account2757)\
**Post date:** [2022 年 9 月 13 日午前 7:51 UTC](https://community.cybozu.dev/t/topic/54/2 "2022-09-13T07:51:19Z")

</div>

Sei\_EL様

idにでたらめな文字列，とのことなので，  
changelist[i] = records[checked\_index][‘レコード番号’][‘value’];  
や，  
obj[“id”] = changelist[i];  
に想定したものが格納されているか確認すると良いかと思います．

---

<div class="post-metadata">

**Author:** ![Legacy\_Account1639](https://avatars.discourse-cdn.com/v4/letter/l/ce7236/32.png) [@Legacy\_Account1639](https://community.cybozu.dev/u/Legacy_Account1639)\
**Post date:** [2022 年 9 月 13 日午前 7:58 UTC](https://community.cybozu.dev/t/topic/54/3 "2022-09-13T07:58:42Z")

</div>

TO様

コメントありがとうございます。

ご指摘いただいた

```
changelist[i] = records[checked_index]['レコード番号']['value'];

```

と

```
obj["id"] = changelist[i];

```

の項目で確認したところ、想定していた値が格納されていることが確認できました。

&nbsp;

そうなると、

```
list.push(obj);

```

もしくはその後の

```
varrequestObj = {
                           "app": kintone.app.getId(),
                           "records": list
                          };

```

の部分でおかしなことになっているのだと思います。

あと、追加の質問になってしまうのですが、下の書き方ですとidと製番以外の情報を持ったレコードですと正常に動かないのでしょうか

```
for(leti =0; i < count; i++) {
             varobj = {};
               obj["id"] = changelist[i];
               obj["製番"] = NewSeiban;
               list.push(obj);
            }

```

&nbsp;

---

<div class="post-metadata">

**Author:** ![Legacy\_Account2757](https://avatars.discourse-cdn.com/v4/letter/l/65b543/32.png) [@Legacy\_Account2757](https://community.cybozu.dev/u/Legacy_Account2757)\
**Post date:** [2022 年 9 月 13 日午前 8:20 UTC](https://community.cybozu.dev/t/topic/54/4 "2022-09-13T08:20:46Z")

</div>

Sei\_EL様

NewSeiban等の構造がわからないので何とも言えませんが，今回のようなケースでは，

```
              var obj = {};
               obj["id"] = changelist[i];
               obj["製番"] = NewSeiban;
               list.push(obj);

```

ではなく，

```
              var obj = {};
             obj["id"] = {value: changelist[i]};
             obj["製番"] = {value: NewSeiban};
               list.push(obj);

```

となるのかと思います．  
[レコードの一括更新](https://community.cybozu.dev/hc/ja/articles/201941784-%E3%83%AC%E3%82%B3%E3%83%BC%E3%83%89%E3%81%AE%E6%9B%B4%E6%96%B0-PUT-#step2)

他のフィールドについては，記載しなければ更新されません．  
ただ，テーブルデータの場合はちょっとクセがあるので，注意ください．  
[レコード更新におけるテーブル操作のテクニック](https://community.cybozu.dev/hc/ja/articles/200752984-%E3%83%AC%E3%82%B3%E3%83%BC%E3%83%89%E6%9B%B4%E6%96%B0%E3%81%AB%E3%81%8A%E3%81%91%E3%82%8B%E3%83%86%E3%83%BC%E3%83%96%E3%83%AB%E6%93%8D%E4%BD%9C%E3%81%AE%E3%83%86%E3%82%AF%E3%83%8B%E3%83%83%E3%82%AF)

---

<div class="post-metadata">

**Author:** ![Legacy\_Account1639](https://avatars.discourse-cdn.com/v4/letter/l/ce7236/32.png) [@Legacy\_Account1639](https://community.cybozu.dev/u/Legacy_Account1639)\
**Post date:** [2022 年 9 月 13 日午前 9:16 UTC](https://community.cybozu.dev/t/topic/54/5 "2022-09-13T09:16:41Z")

</div>

TO様

コメントありがとうございます。

テーブル操作の部分は今まで知らない項目でしたので、確認して、現在のソフトの問題解決に繋がるか検討しようと思います。

&nbsp;

申し訳ありませんが、まだ解決まで到達できておりませんので、他にも気づいて点等ありましたらコメントいただけると幸いです。

---

<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:** [2024 年 6 月 10 日午前 1:40 UTC](https://community.cybozu.dev/t/topic/54/6 "2024-06-10T01:40:37Z")

</div>

クローズされました: 2024 年 6 月 10 日午前 1:40 UTC

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