# 同期PUTでサブテーブルを更新する時に　with a status of 400 (Bad Request) 　入力内容が正しくありません エラーが出ました

**URL:** <https://community.cybozu.dev/t/topic/576>\
**Category:** kintone 開発相談\
**Created:** [2017 年 10 月 12 日午前 6:02 UTC](https://community.cybozu.dev/t/topic/576 "2017-10-12T06:02:50Z")\
**Posts on this page:** 10\
**Page:** 1

<div class="post-metadata">

**Author:** ![Legacy\_Account1937](https://avatars.discourse-cdn.com/v4/letter/l/f475e1/32.png) [@Legacy\_Account1937](https://community.cybozu.dev/u/Legacy_Account1937)\
**Post date:** [2017 年 10 月 12 日午前 6:02 UTC](https://community.cybozu.dev/t/topic/576/1 "2017-10-12T06:02:50Z")

</div>

同期PUTでサブテーブルを更新する時に with a status of 400 (Bad Request) 入力内容が正しくありません エラーが出ました

図１のJSONで「kintone.api(kintone.api.url(‘/k/v1/records’, true), ‘PUT’, body, function(resp)」うまく出来ますが、同期PUT通信で図２のエラーが出ました。エラー中に更新するレコードIDがないとかいていますが、僕のJSON中に書いていますけど、ID:２３０は更新するレコードIDです。

分かる方が教えて頂ければ助かります。ありがとうございます。

&nbsp;

(function() {  
“use strict”;

//レコードの編集、詳細画面で適用する  
var events = [  
‘app.record.edit.submit’,  
‘app.record.create.submit’  
];  
kintone.events.on(events, function(event) {  
var record = event.record;  
var subtabledata=record.売上計上明細テーブル;  
//  
var token = kintone.getRequestToken();  
updatek22subtable(230,token);  
return event;  
});

////  
function updatek22subtable(rid,token){

var subtable={ // テーブルへの追加行  
“value” : {  
“売上合計\_売上計上” : {  
“value” : “888”  
}  
}  
};  
var strsubtable=JSON.stringify(subtable);

var body2 = ‘{ “app”: 22,“id”: 230, “record” : { “注文書一覧\_売上” : { “value” :[’ + strsubtable + ‘]}},“REQUEST\_TOKEN”:"’ + kintone.getRequestToken() + ‘" }’;

var subtableobj=JSON.parse(body2);

var body3 ={“app”: 22,  
“records”: [  
{  
“id”: 230,  
“record”: {  
“注文書一覧\_売上”: {  
“value”:[{“value” : {“売上合計\_売上計上” :{ “value” : “888” }}}]  
}  
}  
}  
]  
};

var appid=22;

var query = ‘レコード番号="’ + rid+‘"’;//  
query = encodeURIComponent(query);  
var appUrl = kintone.api.url(‘/k/v1/records’) + ‘?app=’+ appid + ‘&query=’ + query;

var resp\_data=req(appUrl);  
if(resp\_data.records.length \> 0){  
for(var i = 0; resp\_data.records.length \> i; i++){  
//k22サブテーブルに更新  
var strJSON =body3;// ‘{ “app”: “22”,“id”: ‘+rid+’, “record” : { “注文書一覧\_売上” : { “value” : [{“value” : {“売上合計\_売上計上” :{ “value” : “888” }}}]}},“\_\_REQUEST\_TOKEN\_\_”:"’ + token + ‘" }’;

putreq(strJSON);

}

}

}

function req(reqUri) {

// 同期リクエストを行う  
var xmlHttp = new XMLHttpRequest();  
xmlHttp.open(“GET”, reqUri, false);  
xmlHttp.setRequestHeader(‘X-Requested-With’,‘XMLHttpRequest’);  
xmlHttp.send(null);

//取得したレコードをArrayに格納  
var resp\_data = JSON.parse(xmlHttp.responseText);  
return resp\_data;  
}

function putreq(strJSON){

// 登録先アプリの設定  
var appURL = kintone.api.url(‘/k/v1/record’);

var xmlhttp = false;

var xhr = new XMLHttpRequest();  
xhr.open(‘PUT’, appURL);  
xhr.setRequestHeader(‘X-Requested-With’, ‘XMLHttpRequest’);  
xhr.setRequestHeader(‘Content-Type’, ‘application/json’);  
xhr.onload = function() {  
if (xhr.status === 200) {  
// success  
console.log(JSON.parse(xhr.responseText));  
} else {  
// error  
console.log(JSON.parse(xhr.responseText));  
}  
};  
xhr.send(JSON.stringify(strJSON));

&nbsp;

}

})();

&nbsp;

&nbsp;図１

&nbsp;図２

&nbsp;

---

<div class="post-metadata">

**Author:** ![Legacy\_Account1517](https://avatars.discourse-cdn.com/v4/letter/l/4bbf92/32.png) [@Legacy\_Account1517](https://community.cybozu.dev/u/Legacy_Account1517)\
**Post date:** [2017 年 10 月 12 日午前 6:45 UTC](https://community.cybozu.dev/t/topic/576/2 "2017-10-12T06:45:37Z")

</div>

pankou4649 さん

リクエスト内容は複数レコードの構造ですが、リクエスト先が1レコード対応のAPIです。

var appURL = kintone.api.url(‘/k/v1/record’);

---

<div class="post-metadata">

**Author:** ![Legacy\_Account1937](https://avatars.discourse-cdn.com/v4/letter/l/f475e1/32.png) [@Legacy\_Account1937](https://community.cybozu.dev/u/Legacy_Account1937)\
**Post date:** [2017 年 10 月 12 日午前 7:08 UTC](https://community.cybozu.dev/t/topic/576/3 "2017-10-12T07:08:00Z")

</div>

**[rex0220](https://community.cybozu.dev/hc/ja/profiles/435994154-rex0220)さん**

**ご返事、有難うございます。この問題が改善しました、有難うございます。助かりました。**

**でも下記 図A エラーが出ました。調べますと B）リンク → サブテーブルは "[&nbsp;]"が要らないと書いていますので、&nbsp;&nbsp;C)のスースに変わりました、でも図３のエラーが出ました。**

**つまり、下記の最新ソースのbody3とbody４はどちらがただしいです、僕が全然分かりません。**

**図A**

B）

[https://developer.cybozu.io/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-](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-)

&nbsp;

C)

var body4 ={  
“app”: 22,  
“records”: [  
{ // 1件目のデータ  
“id”: 230,  
“record”: {  
“注文書一覧\_売上”: {  
“value”:{“value” : {“売上合計\_売上計上” :{ “value” : 888 }}}  
}  
}  
}  
]  
};

図３

&nbsp;

図４

最新のソース

(function() {  
“use strict”;

//レコードの編集、詳細画面で適用する  
var events = [  
‘app.record.edit.submit’,  
‘app.record.create.submit’  
];  
kintone.events.on(events, function(event) {  
var record = event.record;  
var subtabledata=record.売上計上明細テーブル;  
//  
var token = kintone.getRequestToken();  
updatek22subtable(230,token);  
return event;  
});

////  
function updatek22subtable(rid,token){

var subtable={ // テーブルへの追加行  
“value” : {  
“売上合計\_売上計上” : {  
“value” : “888”  
}  
}  
};  
var strsubtable=JSON.stringify(subtable);

var body2 = ‘{ “app”: 22,“id”: 230, “record” : { “注文書一覧\_売上” : { “value” :[’ + strsubtable + ‘]}},“REQUEST\_TOKEN”:"’ + kintone.getRequestToken() + ‘" }’;

var subtableobj=JSON.parse(body2);

var body3 ={“app”: 22,  
“records”: [  
{  
“id”: 230,  
“record”: {  
“注文書一覧\_売上”: {  
“value”:[{“value” : {“売上合計\_売上計上” :{ “value” : “888” }}}]  
}  
}  
}  
]  
};

var body4 ={  
“app”: 22,  
“records”: [  
{ // 1件目のデータ  
“id”: 230,  
“record”: {  
“注文書一覧\_売上”: {  
“value”:{“value” : {“売上合計\_売上計上” :{ “value” : 888 }}}  
}  
}  
}  
]  
};

var appid=22;

var query = ‘レコード番号="’ + rid+‘"’;//  
query = encodeURIComponent(query);  
var appUrl = kintone.api.url(‘/k/v1/records’) + ‘?app=’+ appid + ‘&query=’ + query;

var resp\_data=req(appUrl);  
if(resp\_data.records.length \> 0){  
for(var i = 0; resp\_data.records.length \> i; i++){  
//k22サブテーブルに更新  
var strJSON =body4;// ‘{ “app”: “22”,“id”: ‘+rid+’, “record” : { “注文書一覧\_売上” : { “value” : [{“value” : {“売上合計\_売上計上” :{ “value” : “888” }}}]}},“\_\_REQUEST\_TOKEN\_\_”:"’ + token + ‘" }’;

putreq(strJSON);

}

}

}

function req(reqUri) {

// 同期リクエストを行う  
var xmlHttp = new XMLHttpRequest();  
xmlHttp.open(“GET”, reqUri, false);  
xmlHttp.setRequestHeader(‘X-Requested-With’,‘XMLHttpRequest’);  
xmlHttp.send(null);

//取得したレコードをArrayに格納  
var resp\_data = JSON.parse(xmlHttp.responseText);  
return resp\_data;  
}

function putreq(strJSON){

// 登録先アプリの設定  
var appURL = kintone.api.url(‘/k/v1/records’);

var xmlhttp = false;

var xhr = new XMLHttpRequest();  
xhr.open(‘PUT’, appURL);  
xhr.setRequestHeader(‘X-Requested-With’, ‘XMLHttpRequest’);  
xhr.setRequestHeader(‘Content-Type’, ‘application/json’);  
xhr.onload = function() {  
if (xhr.status === 200) {  
// success  
console.log(JSON.parse(xhr.responseText));  
} else {  
// error  
console.log(JSON.parse(xhr.responseText));  
}  
};  
xhr.send(JSON.stringify(strJSON));

&nbsp;

}

})();

&nbsp;

&nbsp;

---

<div class="post-metadata">

**Author:** ![Legacy\_Account1517](https://avatars.discourse-cdn.com/v4/letter/l/4bbf92/32.png) [@Legacy\_Account1517](https://community.cybozu.dev/u/Legacy_Account1517)\
**Post date:** [2017 年 10 月 12 日午前 7:19 UTC](https://community.cybozu.dev/t/topic/576/4 "2017-10-12T07:19:45Z")

</div>

サブテーブルは、配列構造です。

&nbsp;

“注文書一覧\_売上”: {  
“value”:{“value” : {“売上合計\_売上計上” :{ “value” : 888 }}}  
}

&nbsp;

&nbsp;

---

<div class="post-metadata">

**Author:** ![Legacy\_Account1937](https://avatars.discourse-cdn.com/v4/letter/l/f475e1/32.png) [@Legacy\_Account1937](https://community.cybozu.dev/u/Legacy_Account1937)\
**Post date:** [2017 年 10 月 12 日午前 7:30 UTC](https://community.cybozu.dev/t/topic/576/5 "2017-10-12T07:30:38Z")

</div>

\*\*[rex0220](https://community.cybozu.dev/hc/ja/profiles/435994154-rex0220)さん \*\*

**ご返事、有難うございます。**

```
>サブテーブルは、配列構造です。
 >"注文書一覧_売上": {
>"value":{"value" : {"売上合計_売上計上" :{ "value" : 888 }}}
>}

```

&nbsp;つまり 僕のbody4が正しいですか？PUTでサブテーブル更新と普通のレコード更新と同じと考えています、ただサブテーブルの更新は一つフィルドではなく、配列ですと認識は正しいですか？

でも、下記のエラーはbody4のJSONは違いますと書いています、どこの問題は全然分かりません、**[rex0220](https://community.cybozu.dev/hc/ja/profiles/435994154-rex0220)さん もし 何かわかったら、教えて頂きたいです。**

有難うございます。

---

<div class="post-metadata">

**Author:** ![Legacy\_Account1517](https://avatars.discourse-cdn.com/v4/letter/l/4bbf92/32.png) [@Legacy\_Account1517](https://community.cybozu.dev/u/Legacy_Account1517)\
**Post date:** [2017 年 10 月 12 日午前 7:39 UTC](https://community.cybozu.dev/t/topic/576/6 "2017-10-12T07:39:07Z")

</div>

先ほどアップロードしていたコードが削除されていますが、コード上は、配列ではなくオブジェクトでした。

先ほど言ったように、実際に送信したデータをデバッグツールで確認しましょう。

&nbsp;

“注文書一覧\_売上”: {  
“value”:{“value” : {“売上合計\_売上計上” :{ “value” : 888 }}}  
}

&nbsp;

&nbsp;

---

<div class="post-metadata">

**Author:** ![Legacy\_Account1937](https://avatars.discourse-cdn.com/v4/letter/l/f475e1/32.png) [@Legacy\_Account1937](https://community.cybozu.dev/u/Legacy_Account1937)\
**Post date:** [2017 年 10 月 12 日午前 7:44 UTC](https://community.cybozu.dev/t/topic/576/7 "2017-10-12T07:44:05Z")

</div>

**[rex0220](https://community.cybozu.dev/hc/ja/profiles/435994154-rex0220)さん**

**ご返事、有難うございます。**

**debug ツールはどこにありますか？**

---

<div class="post-metadata">

**Author:** ![Legacy\_Account1517](https://avatars.discourse-cdn.com/v4/letter/l/4bbf92/32.png) [@Legacy\_Account1517](https://community.cybozu.dev/u/Legacy_Account1517)\
**Post date:** [2017 年 10 月 12 日午前 7:46 UTC](https://community.cybozu.dev/t/topic/576/8 "2017-10-12T07:46:54Z")

</div>

下記に参考になりそうなリンクがありますので、確認してみてください。

[https://qiita.com/rex0220/items/05ebd85e918eeb16e483#%E3%83%87%E3%83%90%E3%83%83%E3%82%B0](https://qiita.com/rex0220/items/05ebd85e918eeb16e483#%E3%83%87%E3%83%90%E3%83%83%E3%82%B0)

---

<div class="post-metadata">

**Author:** ![Legacy\_Account1937](https://avatars.discourse-cdn.com/v4/letter/l/f475e1/32.png) [@Legacy\_Account1937](https://community.cybozu.dev/u/Legacy_Account1937)\
**Post date:** [2017 年 10 月 12 日午前 10:52 UTC](https://community.cybozu.dev/t/topic/576/9 "2017-10-12T10:52:13Z")

</div>

**[rex0220](https://community.cybozu.dev/hc/ja/profiles/435994154-rex0220)さん**

**有難うございます。**

---

<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:** [2025 年 8 月 20 日午前 2:13 UTC](https://community.cybozu.dev/t/topic/576/10 "2025-08-20T02:13:07Z")

</div>

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