2024.11.28
JavaScriptでkintoneのレコード更新する際に400エラー
kintoneで既存レコード内のサブテーブルに行を追加するコードを書いていた際、対象レコードを変数(targetRecord
)に取り出し(GET)、その内容を変数内で書き換え、更新(PUT)しようとしたところ、400エラーが発生しました。
エラーメッセージは「レコードIDは更新できない」というものでした。
つまり、レコードIDごと上書きするようなコードになっていたことに気づきました。
// 更新したいレコードを変数に取出し
kintone.api(kintone.api.url('/k/v1/record', true), 'GET', {
app: targetAppId,
id: '2'
}).then(function(resp) {
var targetRecord = resp.record;
// (レコードが格納されている変数targetRecordを更新する処理)
// レコードを更新
kintone.api(kintone.api.url('/k/v1/record', true), 'PUT', {
app: targetAppId,
id: '2',
record: targetRecord // これがNG
}).then(function() {
// 成功時の処理
});
});
この問題を解決するために、レコード更新部分をリファレンスのコードサンプルに従い、更新したい項目を指定する方法に変更しました。
kintone.api(kintone.api.url('/k/v1/record', true), 'PUT', {
app: targetAppId,
id: '2',
record: {
フィールドコード名: {
value: 値
}
}
}).then(function() {
// 成功時の処理
});
他のサイトでも、フィールドコード名の間違い、ヘッダ情報の指定漏れ、フィールドタイプの指定漏れなどが原因でエラーが発生することがあると記載されていますが、今回はレコードが入っている変数(つまりレコードIDが含まれている)を使用したPUTでのレコード更新が400エラーの原因でした。