対象レコードを取得→別アプリへの登録処理 POST 400 エラー

お世話になります。

kintone JavaScript 2週間の初心者です。

お手数をおかけいたしますが、下記についてご教示いただけないでしょうか。

 

【実現したいこと】

現在、一括登録ボタンを設置して別アプリに更新が必要なレコードを取得→

対象レコードの一部を別アプリに登録するといった処理を行いたいです。

 

【ソース】

(function() {
“use strict”;

kintone.events.on(‘app.record.index.show’, function(event) {
var oldButton = document.getElementById(‘updateButton’);
var button = document.createElement(‘button’);

if(oldButton !== null) oldButton.parentNode.removeChild(oldButton);

button.innerHTML = ‘UpdateButton’;
button.id = ‘updateButton’;
kintone.app.getHeaderMenuSpaceElement().appendChild(button);
button.addEventListener(‘click’, function(event) {
let records = event.records;

let GET_param = {‘app’: 857,
‘Query’:“計算 >= "120" and tags not like "販売店" and compsol_category1 not in ("1次代理店", "WD 連携パートナー", "ネットワーク 連携パートナー") order by record_id desc limit 100 offset 0”,
‘fields’: [‘$id’, ‘lead_identity’ , ‘計算’]

};

return kintone.api(kintone.api.url(‘/k/v1/records’, true), ‘GET’, GET_param).then(function(resp) {

const putRecords = [];

for (var i = 0; i < resp.records.length; i++) {
var calcNum = resp.records[i][‘計算’].value;
var lead_identityNum = resp.records[i][‘lead_identity’].value;
let putRecord = {
‘id’: resp.records[i][‘$id’].value,
‘record’: {},
};

if (calcNum) {
putRecord.record[‘数値’] = {
‘value’: calcNum
};
}
if (lead_identityNum) {
putRecord.record[‘文字列__1行__4’] = {
‘value’: lead_identityNum
};
}

putRecords.push(putRecord);
}

console.log(putRecords);

var Post_param = {
‘app’: 1173,
‘records’: putRecords

};

//console.log(createPutRecords(records));

return kintone.api(kintone.api.url(‘/k/v1/records’, true), ‘POST’, Post_param).then(function(resp2) {

console.log(resp2);
alert(‘ルックアップの更新が完了しました!’);
//location.reload();

}).catch(function(error) {
alert(‘ルックアップの更新でエラーが発生しました。’ + error.message);
});
});
});
});
})();

【エラー内容】

responseは “200” で返ってきますが、空レコードが登録されています。

GETする範囲も正しい部分が取得できているかと考えております。

 

初心者な質問で申し訳ございませんが、ご教示いただけないでしょうか。

何卒よろしくお願い申し上げます。

 

> responseは “200” で返ってきますが、空レコードが登録されています。

とのことなのでPOST自体は成功しているということですね、
この場合、怪しいのは送っているrecordsの中身が間違っているケースです(例えば存在しないフィールドなどを指定するとkintoneはそれを無視するので)

 

いちど、送信するデータ(Post_param)の内容が正しいか、コンソールログなどで出力して見てみてください。

 

村濱一樹様

お世話になります。

コメントを頂戴いたしまして有難うございます。

どうやら、Recordsの配列を勘違いしていたようでして、下記の形で記述をすれば正常にPOSTされました。

(function() {
“use strict”;

kintone.events.on(‘app.record.index.show’, function(event) {
var oldButton = document.getElementById(‘タグ履歴へ一括登録’);
var button = document.createElement(‘button’);

if(oldButton !== null) oldButton.parentNode.removeChild(oldButton);

button.innerHTML = ‘タグ履歴へ一括登録’;
button.id = ‘タグ履歴へ一括登録’;
kintone.app.getHeaderMenuSpaceElement().appendChild(button);
button.addEventListener(‘click’, function(event) {
let records = event.records;

let GET_param = {‘app’: 857,
‘Query’:“計算 >= "120" and tags not like "販売店" and compsol_category1 not in ("1次代理店", "WD 連携パートナー", "ネットワーク 連携パートナー") and 更新日時 >= YESTERDAY() order by 更新日時 desc limit 100 offset 0”,
//‘fields’: [‘$id’, ‘lead_identity’ , ‘計算’]

};

return kintone.api(kintone.api.url(‘/k/v1/records’, true), ‘GET’, GET_param).then(function(resp) {
console.log(resp);
const putRecords = [];

for (var i = 0; i < resp.records.length; i++) {
var calcNum = resp.records[i][‘計算’].value;
var lead_identityNum = resp.records[i][‘lead_identity’].value;
//let putRecord = {
//‘id’: resp.records[i][‘$id’].value,
//‘record’: {},
//};

putRecords.push({

“数値_0”: { “value”: calcNum },
“文字列__1行__4”: { “value”: lead_identityNum },
“hotread_name”:{“value”:“【アクションスコア達成】Test”}

});
}

console.log(putRecords);

var Post_param = {
‘app’: 1173,
‘records’: putRecords

};

//console.log(createPutRecords(records));

return kintone.api(kintone.api.url(‘/k/v1/records’, true), ‘POST’, Post_param).then(function() {

alert(‘タグ履歴アプリへの登録が完了しました!’);
location.reload();

}).catch(function(error) {
alert(‘タグ履歴アプリへの登録でエラーが発生しました。’ + error.message);
});
});
});
});
})();

 

お騒がせいたしまして、申し訳ございませんでした。

引き続き、よろしくお願い申し上げます。