テーブルのデータ(複数行)を別のアプリに受け渡す方法

お世話になります。
テーブルのデータを別のアプリに受け渡すところで躓いております。
例えば、アプリAで一つのテーブルに3行あったとします。
この3行分のデータをそのままアプリBにJavascriptで受け渡そうと、各行を変数iとして0から2まで動かすと、最終行のみ1行がアプリBに表示される状況です。
受け渡しのデータは行数分取れています。どうやったら複数行、アプリBに受け渡されるのかわかる方がいればアドバイスをお願いします。
以下にアドバイスをお願いしたいソースを記載します。
    kintone.events.on('app.record.create.submit.success', function(event) {
        var record = event.record;
        var tableRecords = record.table.value;
        var tableCount = tableRecords.length -1;
        var appURL = 'https://(中略)/k/v1/record.json';
        var tmpHeades = {'X-Cybozu-Authorization': (中略)=','Content-Type': 'application/json'};
   for(i=0; i<=tableCount;i++){
        var reqBody =
            {
            "app": アプリBのID,
            "updateKey": {
                "field": "Bフィールド名",
                "value": record.Aフィールド名.value
                },
                "record": {
                    "table":{
                    "id":i,
                        "value":[
                            {
                            "value":{
                                "table_facility": {
                                    "value": tableRecords[i].value['table_1'].value
                                },
                                "table_start_point": {
                                    "value": tableRecords[i].value['table_1'].value
                                }}}]}}
        }
    }
               kintone.proxy(appURL, 'PUT', tmpHeades, reqBody, function(resp){
                }, function(resp){
                }
                );
    })

teranaka さん

ざっと見る限り、2点気になります。

1)ループをかける場所が違うかなと思います。

今のプログラムの場合、例えば、

"app": アプリBのID,

この部分も、テーブルの行数だけ生成されてしまいます。本来ループをかけるべきは、Tableの値の部分ですね。

 

フィールド形式

https://developer.cybozu.io/hc/ja/articles/202166330

こちらの、Subtableの部分を見てもらうと、イメージわくかなと思います。

 

2)reqBodyがループのたびに新しく生成されている

ループの中で、毎回  var reqBody = と宣言されるので、毎回毎回、新たに reqBodyが定義され、そこに値が

代入されている状態ですね。なので、最終行だけが、きちんとレコード登録されている状態かと。

変数定義は1回のみで、あとはループをまわしながら、その変数に文字を付け足していくのが、正しい流れだと思われます。

 

実際にアプリBへの登録は成功しているので、上記2点を調整すれば、上手くいくと思います。

上海レンユアー松村様

回答の方が遅くなってしまい大変失礼いたしました。

ありがとうございます、指定されたサイトから完成イメージがつきました。

ただ、「文字を付け足していく」の箇所を以下の2点を試してみましたがうまくいっていない状態です。

・reqBody内でfor文を定義

  “record”: {
“G_table”:{
“value”:[
for(i = 0; i <= tableCount; i++)
{

この場合ではコンソールエラーが生じます

・新規変数bodyを作成、最後にreqBodyへ足し合わせ

for(i = 0; i <= tableCount; i++)
{
var body ={
“record”: {
“G_table”:{
~処理~
reqBody += body;
}

reqBodyに正しい値が入っていないようです。

申し訳ございませんが、再度ご教示いただけますと幸いです。

teranakaさん

細かくコード書いている時間がなく、またざっくりとしたアドバイスになってしまいますが、

御了承ください。

今回 teranakaさんが生成するJSONの最終系は以下の様な形式になると思います(APP指定部分は省略)

https://developer.cybozu.io/hc/ja/articles/202166330 より抜粋

"<フィールドコード>": {
    "value": [
        {
            "value": {
                "文字列 __1行__ 0": {
                    "value": "サンプル1"
                },
                "数値_0": {
                    "value": "1"
                }
            }
        },
        {
            "value": {
                "文字列 __1行__ 0": {
                    "value": "サンプル2"
                },
                "数値_0": {
                    "value": "2"
                }
            }
        }
    ]
}

この形式の文字列を生成するのが、プログラムとしてのゴールとなります。

これを3つのグループにわけるとすると以下の様になります。

第一グループ

"<フィールドコード>": {
    "value": [

第二グループ

{
            "value": {
                "文字列 __1行__ 0": {
                    "value": "サンプル1"
                },
                "数値_0": {
                    "value": "1"
                }
            }
        },
        {
            "value": {
                "文字列 __1行__ 0": {
                    "value": "サンプル2"
                },
                "数値_0": {
                    "value": "2"
                }
            }
        }

第三グループ

]
}

 

この第二グループは、テーブルが2行あるパターンですね。つまりこの文字列の生成には、ループが必要ということです。

teranakaさんのコードを、

第一グループ生成 1回だけ

第二グループ生成 テーブル行数分ループ

第三グループ生成 1回だけ

にして、最後に、

第一グループ+第二グループ+第三グループ で最終版文字列を生成。

その形式が正しければ、上手く書き込めると思います。

 

あと、これは急がば回れですが、一旦、JavaScriptの中で、上記の様な文字列を

ベタ打ちで、生成して、書き込み成功するところまで、作ると良いと思います。

それで成功したら、それをロジックに落とし込んでいくと、よいかなと。

上海レンユアー松村様

お世話になっております。また返信が遅れてしまい申し訳ありません。

少々長い処理になりましたが指摘の通り、文字列のベタ打ちで望み通りの処理が動くようになりました。

ありがとうございました。