ATerコラム

2024.11.28

IT

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エラーの原因でした。