# 一覧表示データをボタンで別アプリ一括登録

**URL:** <https://community.cybozu.dev/t/topic/170>\
**Category:** kintone 開発相談\
**Created:** [2022 年 10 月 14 日午前 4:11 UTC](https://community.cybozu.dev/t/topic/170 "2022-10-14T04:11:40Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![Legacy\_Account2822](https://avatars.discourse-cdn.com/v4/letter/l/d6d6ee/32.png) [@Legacy\_Account2822](https://community.cybozu.dev/u/Legacy_Account2822)\
**Post date:** [2022 年 10 月 14 日午前 4:11 UTC](https://community.cybozu.dev/t/topic/170/1 "2022-10-14T04:11:40Z")

</div>

お世話なります。JavaScript初心者になります。

実現したいことは、発注アプリの一覧に表示された複数データ（サブテーブルあり）を、

仕入アプリへ新規登録したいです。よくある問題かとは思いますが、調べても正解にたどりつけず困っております。

参考(1) [jsでのサブテーブルへのPOST方法](https://community.cybozu.dev/hc/ja/community/posts/360050428531-js%E3%81%A7%E3%81%AE%E3%82%B5%E3%83%96%E3%83%86%E3%83%BC%E3%83%96%E3%83%AB%E3%81%B8%E3%81%AEPOST%E6%96%B9%E6%B3%95)

参考(2) [一覧で表示したレコードのキーを使用して一括で別のアプリに登録したい](https://community.cybozu.dev/hc/ja/community/posts/202922664-%E4%B8%80%E8%A6%A7%E3%81%A7%E8%A1%A8%E7%A4%BA%E3%81%97%E3%81%9F%E3%83%AC%E3%82%B3%E3%83%BC%E3%83%89%E3%81%AE%E3%82%AD%E3%83%BC%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%A6%E4%B8%80%E6%8B%AC%E3%81%A7%E5%88%A5%E3%81%AE%E3%82%A2%E3%83%97%E3%83%AA%E3%81%AB%E7%99%BB%E9%8C%B2%E3%81%97%E3%81%9F%E3%81%84)

配列についてよく理解できていなかったり、つぎはぎで色々とおかしい部分があると思います。

アドバイスいただけると幸いです。

&nbsp;

エラーはありませんが、コンソール画面がこちらです。

&nbsp;

```
(() => {
  'use strict';
  //レコード一覧画面表示後イベント
  kintone.events.on('app.record.index.show', (event) => {

    const records = event.records;

    // ヘッダースペース要素の取得
    const headerSpace = kintone.app.getHeaderMenuSpaceElement();

    // ボタン要素の作成
    const button = document.createElement("input");
    button.value = "一括登録";
    button.type = "button";

    // ボタンがクリックされた時の処理
    const submit = function(){
    const recRecords = [];
    const postRecords = [];

      // 取得したレコード分ループ
      records.forEach(function(eachRecord) {
        let subTable = eachRecord.発注詳細.value;

        // サブテーブル分ループ
        subTable.forEach(function(eachRow) {
                                            
          let tableA = eachRow.value.商品名.value;
          let tableB = eachRow.value.数量.value;
          let tableC = eachRow.value.単位.value;
          let tableD = eachRow.value.単価.value;
          let tableE = eachRow.value.摘要.value;

          recRecords.push({
            "商品名": { "value": tableA },
            "数量": { "value": tableB },
            "単位": { "value": tableC },
            "単価": { "value": tableD },
            "摘要": { "value": tableE },
          });
        })
        
        postRecords["仕入先"] = eachRecord.発注先.value;
        postRecords["仕入日"] = eachRecord.発注日.value;
        postRecords["仕入No"] = "S-2022-0002";
        postRecords["発注No"] = eachRecord.発注No.value;
        postRecords["担当者"] = eachRecord.担当者.value;
        postRecords["仕入詳細"] = recRecords;
        postRecords["工番"] = eachRecord.工番.value;
        postRecords["科目名"] = eachRecord.科目名.value;        
        
      });

    const postParams = {
      app: 73,
      records: postRecords
    };
          
    console.log(postParams);
    console.log(postRecords);

    kintone.api(kintone.api.url('/k/v1/records.json', true), 'POST', postParams, (resp) => {
      // success
      console.log(resp);
    }, (error) => {
      // error
      console.log(error);  
    });
  };

  // ボタンをヘッダースペースに追加
  headerSpace.appendChild(button);
  // ボタンのクリックイベントに処理を登録
  button.onclick = submit;

});
})();

```

---

<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 年 10 月 14 日午後 5:39 UTC](https://community.cybozu.dev/t/topic/170/2 "2022-10-14T17:39:41Z")

</div>

渡邉祐子様

コードをみると、postparamsのrecordsが配列になっていないようです。  
またさかのぼってrecords.forEachで複数のレコードに対してループしていますが、  
postRecordsが上書きされているようです。  
配列を追加するにはpushする必要があります。

```
        postRecords["仕入先"] = eachRecord.発注先.value;
        postRecords["仕入日"] = eachRecord.発注日.value;
        postRecords["仕入No"] = "S-2022-0002";
        postRecords["発注No"] = eachRecord.発注No.value;
        postRecords["担当者"] = eachRecord.担当者.value;
        postRecords["仕入詳細"] = recRecords;
        postRecords["工番"] = eachRecord.工番.value;
        postRecords["科目名"] = eachRecord.科目名.value;    

```

ここを、

```
        postRecords.push({
"仕入先": {value: eachRecord.発注先.value},
        "仕入日": {value: eachRecord.発注日.value},
        "仕入No": {value: "S-2022-0002"},
        "発注No": {value: eachRecord.発注No.value},
        "担当者": {value: eachRecord.担当者.value},
        "仕入詳細": {value: recRecords},
        "工番": {value: eachRecord.工番.value},
"科目名": {value: eachRecord.科目名.value}
});

```

とすると良いかと思います。  
(テーブルと同じことをしています)

なお、エラー情報やうまく行っていないこと(具体的に)を記載すると回答がつきやすいと思います。

&nbsp;

---

<div class="post-metadata">

**Author:** ![Legacy\_Account2822](https://avatars.discourse-cdn.com/v4/letter/l/d6d6ee/32.png) [@Legacy\_Account2822](https://community.cybozu.dev/u/Legacy_Account2822)\
**Post date:** [2022 年 10 月 17 日午前 5:36 UTC](https://community.cybozu.dev/t/topic/170/3 "2022-10-17T05:36:27Z")

</div>

[TO](https://community.cybozu.dev/hc/ja/profiles/902343704226-TO)様

アドバイスありがとうございます。

説明不足で失礼いたしました。

質問時点では、エラーはなく、コンソール画面には下記の表示でしたので、

登録はされておらず、処理は完了していた（？）という認識でした。

&nbsp;

その後、JavaScriptのpush部分を変更してみましたが、テーブル部分がうまくできていないようです。

エラーはこちらです。

試しに

```
"仕入詳細": {value: recRecords},

```

の部分を

```
"仕入詳細": {

            "value": [

                {

                    "value": {

                        "商品名": {

                            "value": "aaa"

                        },

                        "単価": {

                          "value": "100"

                        }

                    }

                }                          

            ]

        }

```

のようにしたところ、登録に成功しました。

成功時のデータは、"0:"の下に"value:"があるようです。

試行錯誤してみたのですが、解決に至らず、どのように修正したらよろしいでしょうか？

---

<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 年 10 月 17 日午後 11:28 UTC](https://community.cybozu.dev/t/topic/170/4 "2022-10-17T23:28:47Z")

</div>

渡邉祐子様

```
         recRecords.push({
          "商品名": { "value": tableA },
            "数量": { "value": tableB },
            "単位": { "value": tableC },
            "単価": { "value": tableD },
            "摘要": { "value": tableE },
      });

```

ここを，

```
         recRecords.push({
         "value": {
            "商品名": { "value": tableA },
            "数量": { "value": tableB },
            "単位": { "value": tableC },
            "単価": { "value": tableD },
            "摘要": { "value": tableE },
           }
        });

```

に変えてみていただけますか？  
テーブルの部分のvalueが抜けていました．  
おそらくこれでいけるのでは，と思います．  
（今検証環境が手元にないので未検証です）

---

<div class="post-metadata">

**Author:** ![Legacy\_Account2822](https://avatars.discourse-cdn.com/v4/letter/l/d6d6ee/32.png) [@Legacy\_Account2822](https://community.cybozu.dev/u/Legacy_Account2822)\
**Post date:** [2022 年 10 月 18 日午前 2:00 UTC](https://community.cybozu.dev/t/topic/170/5 "2022-10-18T02:00:48Z")

</div>

TO様

無事に登録することが出来ました。ありがとうございます！

また勉強しながら進めていきたいと思います。

貴重なお時間いただきまして、感謝いたします。

---

<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 月 4 日午前 4:54 UTC](https://community.cybozu.dev/t/topic/170/6 "2024-06-04T04:54:19Z")

</div>

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