kintone Rest APIリクエストの400 (Bad Request)表示について

あるアプリのレコード一覧に絞り込み検索を行い、表示されたレコードを別アプリに新規追加するコードを作成したのですが、400 (Bad Request)でうまくいきません。

 

paramの内容には問題がなさそうで、原因はkintone.apiにありそうだということはわかったのですが、どう直せばよいのかで手づまりしています。

 

(function() {
“use strict”;
kintone.events.on(‘app.record.index.show’, function(event) {
if (document.getElementById(‘my_index_button’) !== null) {
return;
}

var myIndexButton = document.createElement(‘button’);
myIndexButton.id = ‘my_index_button’;
myIndexButton.innerText = ‘初期導入費の送信’;

myIndexButton.onclick = function() {

//一覧の絞り込み

//絞り込みのクエリ作成
var condition = ‘日付_契約締結日 = LAST_MONTH()’;
var str_query = “”;
str_query = ‘?query=(’ + condition + ‘)’;

//検索結果のURLへ
document.location = location.origin + location.pathname + str_query;

//一覧を新規レコードとして追加

var records = event.records;
var recordslength = records.length;

//レコードを一件ずつ別のアプリへ追加
for (var i =0; i < records.length; i++) {
var record = records[i];
var corpNo = record[‘レコード番号_管理No’].value;
var initialCost = record[‘計算__初期導入費用’].value;
var invoiceItems = ‘ドロップダウン__請求項目’;

var params = {
“app”: 210, // ← 請求管理アプリのID
“record”: {
“文字列__法人DL管理No”: { “value”: corpNo },
“ドロップダウン__請求項目”: { “value”: invoiceItems },
“数値__単価”: { “value”: initialCost }
}
};

// kintone REST API リクエスト ~ レコードの登録(POST)
/*kintone.api(
kintone.api.url(‘/k/v1/record’, true), // - pathOrUrl
‘POST’, // - method
params, // - params
function(resp) { // - callback
// (特に何もしない)
},
function(resp) { // - errback
// (特に何もしない)
}
);*/
}
console.log(params);
};

kintone.app.getHeaderMenuSpaceElement().appendChild(myIndexButton);
});

})();

 

 

https://developer.cybozu.io/hc/ja/community/posts/900001053246-%E3%83%AC%E3%82%B3%E3%83%BC%E3%83%89%E3%81%AE%E4%B8%80%E6%8B%AC%E5%8F%96%E5%BE%97-%E3%82%AF%E3%82%A8%E3%83%AA%E3%81%A7%E6%9D%A1%E4%BB%B6%E3%82%92%E6%8C%87%E5%AE%9A-%E3%81%AB%E3%81%A6-400-Bad-Request-?input_string=kintone%20Rest%20API%E3%83%AA%E3%82%AF%E3%82%A8%E3%82%B9%E3%83%88%E3%81%AE400%20(Bad%20Request)%E8%A1%A8%E7%A4%BA%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6 

を参考に(‘/k/v1/record’, true)の部分を(‘/k/v1/records’, true)に変えてみたりもしましたが同じ結果となりました。

修正箇所をご教示いただけますと幸いです。

はじめまして

まずは複数レコードのPOSTをご確認ください。

https://developer.cybozu.io/hc/ja/articles/202166160#step2 

 

下記、レコード一覧を取得し、POSTする例を記載しますので、ご参考になれば幸いです。

また下記コードのように、処理ごとに「console.log」で中身を確認するとよりエラー部分が見えてくると思います。

(function() {
   'use strict';

   var events = [
       'app.record.index.show'
    ];

   kintone.events.on(events, function(event) {
       var myIndexButton = document.createElement('button');
       myIndexButton.id = 'my_index_button';
       myIndexButton.innerText = 'ボタン';
       myIndexButton.onclick = function() {
           var records = event.records;
           var Item = []; // 一覧データ
           for(var i = 0; i < records.length; i++) {
               var record = records[i];
// 一件分のデータ
               var itemValue = {
                   '管理No': {value : record['管理No']['value']},
                   '費用': {value : record['費用']['value']},
                   'ドロップダウン': {value : record['ドロップダウン']['value']}
               }        
               console.log(itemValue);
               Item.push(itemValue);       

           }
           console.log(Item);
           var params = {
               app: 102,
               records: Item
           };
           return kintone.api(kintone.api.url('/k/v1/records', true), 'POST', params, function(resp) {
               console.log(resp);
           });
       }
       kintone.app.getHeaderMenuSpaceElement().appendChild(myIndexButton);
   });
})();

ご丁寧にご回答いただき誠にありがとうございます。

データの中身を調べてみたところ、中身と送信先のアプリの入力内容が一致していないことがエラーの原因でした。

またご教示いただいた複数レコードのPOSTを取り入れたところ、コードがすっきりし見やすくなりました。

ありがとうございました。

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