お世話になっております。
掲題に関しまして困っており、ご助言頂ければと思います。
現在、アプリAのrecord.edit.submit時に以下の処理を行おうとしているのですが、上手くいくときと失敗する時があり、結果が安定しません。
1、query:{name:アプリB}でアプリ情報をGETしアプリIDを取得
2、1のアプリIDを使っアプリBをGET
3、2の結果を使って更新データを作成しPUT(revisionも指定)
4、1のアプリIDを使ってアプリBをGET(2とは絞り込み条件が異なり、revisionを再取得する必要がある)
5、4の結果を使って更新データと追加データを作成し、PUT/POST
コードは以下です。
kintone.events.on(‘app.record.edit.submit’, function(event) {
var record = event.record;
//1.アプリID取得
getAppId(“アプリB”).then(function(appId) {
//2.アプリBのテーブルの値を指定してGET
var recId = event.recordId;
var getQuery1 = ‘レコード番号 in ("’ +recId+ ‘") and フラグ in (“no”)’;
var getBody1 = {app: appId, query: getQuery1};
get(appId,getBody1).then(function(resp1) {
console.log(resp1);
//更新データ作成
var putBody1 = {
“app”: appId,
“records”: データ
};
//3.更新
put(appId,putBody1).then(function(put1_result) {
//4.アプリBのフィールドの値を指定してGET
var table = record[‘テーブル’].value;
var bbCode = record[‘BB’].value;
var 配列 = [テーブルの特定フィールドの値を入れる];
var getQuery2 = ‘aaコード in (’ + 配列 + ‘) and bbコード = "’ + bbCode + '" ';
var getBody2 = {app: appId, query: getQuery2};
get(appId,getBody2).then(function(resp2) {
console.log(resp2);
var putArray = [];
var postArray = [];
var tableCopy = table;
var denDate = record[‘伝票日付’].value;
var denNo = record[‘伝票番号’].value;
//更新データ作成
var putBody2 = {
app: appId,
records: データ
};
//5-1PUT
if(条件によってPUTのみかPOSTもするか変わる){
put(appId,putBody2).then(function(put2_result) {
console.log(put2_result);
return event;
});
//5-2POSTデータ作成後PUT/POST
}else{
put(appId,putBody2).then(function(put2_result) {
console.log(put2_result);
//POSTデータ作成
var postBody = {
app: appId,
records: データ
};
post(appId,postBody).then(function(post_result) {
console.log(post_result);
});
});
}
});
});
});
});
return event;
});
//***GET***
function getLocStock1(appId,body){
return kintone.api(‘/k/v1/records’, ‘GET’, body).then(function(resp) {
return resp;
}, function(error) {
console.log(error);
return error;
});
}
//***PUT***
function put(appId,body){
return kintone.api(‘/k/v1/records’, ‘PUT’, body).then(function(resp) {
return resp;
}, function(error) {
// error
console.log(error);
return error;
});
}
//***POST***
function post(appId,body){
return kintone.api(‘/k/v1/records’, ‘POST’, body).then(function(resp) {
return resp;
}, function(error) {
console.log(error);
return error;
});
}
上記処理を行おうとすると、最後(更新、追加内容がアプリBに正しく反映される)まで成功することもあれば、1のアプリIDの取得でエラーになったり、5-2POSTでエラーが検出されるが追加データの内1レコード分だけ反映されていたりと、結果が安定せず困っています。
また、resp/errorでerrorの際はconsole.log()に内容を表示するようにしているのですが、console.log()に中身がなく、errorの原因がわかりません。
以上、何卒宜しくお願い致します。