お世話になります。
現在お客様からのカスタマイズとして対応を行っておりますが、
どうしても解消できない問題が発生していますので、是非アドバイスを
お願い致します。
使用するアプリ:(A)アプリ1、(B)マスタ
概要:CSVデータをそれぞれ取り込んだ「(A)アプリ1」と
「(B)マスタ」を比較する。
一致したデータがあれば「(B)マスタ」のデータ別にカウントを
行い、「(B)マスタの」『カウント件数』欄にカウントした数を
更新する。
一致したデータがなければ「(A)アプリ1」のレコードを削除する。
不具合の現象:「(A)アプリ1」に20件程CSVデータを読み込んだ
場合はレコードの更新・削除が行えている。
しかし、3,000件程CSVデータを読み込んだ場合は「(B)マスタ」の
レコード更新が途中までしか行えていないのか『カウント件数』が
表示されていないレコードが多い。
どうぞよろしくお願いいたします。
function getDelRec(New_Shift,records1){
var str = [];
var str1 = [];
if (records1 !== undefined) {
var count = 0;
//promiseオブジェクトを返す関数を定義
var addPromise = function(records1) {
return new Promise(function(resolve, reject)
{
kintone.api(
//更新
kintone.api.url(‘/k/v1/record’, true),
‘PUT’, {
“app”:appId_Syukei,
“id”:records1[count].$id.value,
“record”:{
“数値_5”:{
“value”:records1[count].数値_5.value //カウント件数
}
}
}
).then(function(resp){
console.log(“count=” + count);
console.log(“body1.id=” + records1[count].$id.value);
count+=1;
resolve();
});
}).catch(function(error){
console.log(error);
});
};
var doPromise = addPromise();
for(var i = 0; i < records1.length; i++){
console.log(“i=” + i);
doPromise = doPromise.then(addPromise(records1));
}
}
for(var k = 0; k < New_Shift.length; k++){
if(New_Shift[k] !== undefined){
str.push(New_Shift[k]);
}
}
// 100件ずつ実行
for (var y = 0; y < parseInt(str.length / 100) + 1; y++) {
var s_slice = 100 * y; // slice開始位置
var e_slice = 100 * (y + 1); // slice終了位置
if (str.length < e_slice) {
e_slice = str.length;
}
//削除クエリ作成
var body = {
‘app’: appId_Tri1,
‘ids’: str.slice(s_slice, e_slice)
};
//削除
kintone.api(kintone.api.url(‘/k/v1/records’, true), ‘DELETE’, body, function(resp) {
// success
console.log(resp);
if (y == parseInt(str.length / 100)) {
// 現在表示されているページをリロードする
location.reload();
//完了アラートの表示
window.confirm(‘データ精査が完了しました。’);
}
}, function(error) {
// error
console.log(error);
});
}
}