アプリAからアプリBにレコードをコピーしたいのですが、空っぽのレコードが追加されてしまいます。
処理の内容は大まかに以下の通りです。
1.アプリAから特定の日時以降のレコードをGET
2.レコードが100件以上あると登録ができないため、100件ずつの2次元配列に分割
3.レコードの内容をアプリBのフィールド形式に変換
4.変換したデータをアプリBにPOST
特にエラー表記はされず、4で行った処理では、「変換したデータ」と同じ数の空のレコードが生成されているため、APIコール時の呼び出し方やbodyの構造に問題があるわけではなさそうです。
「存在しないフィールドコードを指定した場合、そのフィールドは無視されてレコードが登録されます。」ということですので、POSTするデータの記述が間違っている気がしています。
POSTするレコードは以下のような形でアプリBの書式に変換しております。行ごとに記述がまちまちなのは書式をいろいろ試したためで、敢えてまちまちのまま表記します。
以下は抜粋ですが、1レコードに全部で30フィールドほどあります。
let leadBody = {
"record": {
連携アプリ_レコードNo: {value:additionLead.$id.value},
連携アプリ_sid: {value:additionLead.sid.value},
住所1: {"value":additionLead.address1.value},
"住所2": {"value":additionLead.address2.value},
"asignee": {"value":additionLead.asignee.value}
}
};
これを以下のrecordsの中にレコードごとの配列として格納します。
sliceRecordsは100件ずつに分割済みです。
let postBodyArray = [];
sliceAllUpdateLead.forEach(sliceRecords => {
let postBody = {
"app": APP_ID,
"records": []
};
sliceRecords.forEach(record => {
let respBody = setUpdateLead(record);
postBody.records.push(respBody);
});
postBodyArray.push(postBody);
できた配列をアプリB(自分自身)に格納します。
const postLead = async (postBodyArray) => {
postBodyArray.forEach(postBody => {
return kintone.api(kintone.api.url('/k/v1/records', true), 'POST', postBody, resp => {
// success
}, error => {
// error
console.log(error);
});
});
};
先述の通り、レコードは生成されるのですが、値が格納されません。
フィールドコードは正しいことは確認しております。
エラーも表示されないため、原因がわからず参っております。
ご指摘のほどよろしくお願いします。