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 ……
というわけでレコード更新部分はリファレンスのコードサンプルに書いてあるとおり、
更新したい項目を指定するやり方に変えたところ問題が解消しました。
kintone.api(kintone.api.url(‘/k/v1/record’, true), ‘PUT’, {
app: targetAppId,
id: ‘2’,
record: {
フィールドコード名: {
value: 値
}
}
}).then……
他のサイトもいろいろ見ているとフィールドコード名が間違っている、ヘッダ情報が指定されて
いない、フィールドタイプが指定されていない、などの記事がありましたが、今回は
レコードが入っている変数(つまりレコードIDが含まれている)を使用したPUTでのレコード更新は
400エラーになるという体験でした。