新規投稿
フォローする

テーブル内フィールの更新

テーブル内の全レコードの"syear"フィールドに”2021”と更新するロジックを作りたいのですが、
「更新でエラーが発生しました。入力内容がただしくありません。」というエラーが発生します。どうかご教示頂ければ幸いです。

(function() {
"use strict";
kintone.events.on('app.record.detail.show', function(event) {

var updateAppId = 2;

var paramGet = {
'app': updateAppId,
'id': kintone.app.record.getId()

};
return kintone.api(kintone.api.url('/k/v1/record', true), 'GET', paramGet).then(function(resp) {

var pro = resp.record["project"].value;

// フィールドの更新
var record = resp.record;

var paramPut = {
'app': 2,
'record': updateRecords(record,pro)
};


return kintone.api(kintone.api.url('/k/v1/record', true), 'PUT', paramPut);

}).then(function(resp2) {

// 処理成功
alert('更新が完了しました');
return event;

}).catch(function(error) {

// エラー表示をする
alert('更新でエラーが発生しました。\n' + error.message);
return event;

});



function updateRecords(record,pro) {

 var tableRecords = record.Table.value;

var putRecords = [];
for (var i = 0, l = tableRecords.length; i < l; i++) {

alert(tableRecords.length);
var tableRecord = tableRecords[i]

var kaishinen = tableRecord.value['kaishibi'].value;

putRecords[i] = {"app": 2,
"id": kintone.app.record.getId(),
"record": {
"project": {
"value": pro
},
// テーブルの中に配置されているフィールドの1行目の場合
"Table": {
"value": [
{
"id": i,
"value": {
"syear": {
"value": 2021
}
}
}
]
}
},
}

}
return putRecords;
}

});
})();

0

2件のコメント

Avatar
juridon

こんにちは!

updateRecords関数内の

"id": i,

の部分ですが、テーブル内のidって0~tableRecords.length未満の連番ではなくて↓な感じのバラバラな番号になったりします。

更新の際はこの番号を指定したらよいとおもいます!


1
Avatar
モツナベ

juridon様 ご回答頂き誠にありがとうございます!

サブテーブル内にもサブレコードが複数あり、レコードも複数あるため、絶対値ID指定は厳しい感じです。
(私の方で理解が及んでいなかったらすみません!)

他の方法があれば幸いです。

あと、気になったのが、APIドキュメントに

「Content-Type に application/json を指定して下さい。 指定しない場合は JSON が解釈できないため、実行時エラーとなります。」とありますが、リクエストヘッダというのは具体的にどこに記述すれば良いのでしょうか??

これがないから更新エラーが出るのかなと思っていますが、ご教示頂ければ幸いです。

0
サインインしてコメントを残してください。