レコード追加成功時にフィールド変更&ステータス更新したい

レコード追加が成功した時に、次の2つの処理を行ったあとにリロードされるようにしたいのですが、うまくいきません。初歩的な質問で恐縮ですが、アドバイスいただけますと幸いです。

→ 更新は1,2ともに行なわれるのですが、OK1→NG2→catchになります。

 

  1. レコード番号を取得して1フィールド更新

  2. プロセスアクションを実行してステータス更新

 

//レコード追加が正常終了した時
kintone.events.on(‘app.record.create.submit.success’, function(event) {
発注番号セット(event);
});

~~~~~~~~~

 

//発注番号を採番してセットする
function 発注番号セット(event) {

var wHNo = event.recordId;
//レコード番号の下6桁を数値に
var wHText = “000000” + wHNo;
wHNo = parseInt(wHText.slice(-6),10);
if (wHNo < 500000) {
wHNo = wHNo + 400000;
} else {
wHNo = wHNo - 100000;
}
wHText = String(wHNo);

var wMessage = ‘’;
var params1 = {
“app”: event.appId,
“id”: event.recordId,
“record”: {
“発注番号”: {
“value”: wHText
}
}
};
var params2 = {
“app”: event.appId,
“id”: event.recordId,
“action”: “発注書作成対象にする”
};

//kintone.Promise対応版
new kintone.Promise(function(resolve, reject) {
kintone.api(kintone.api.url(‘/k/v1/record’, true), ‘PUT’, params1, function(resp) {
alert(“OK1”);
//OK1
kintone.api(kintone.api.url(‘/k/v1/record/status’, true), ‘PUT’, params2, function(resp) {
alert(“OK2”);
//OK2
resolve(resp); //resolveでthenへ
}, function(resp) {
alert(“NG2”);
//NG2
wMessage = ‘【発注管理】[発注書作成対象にする]アクションに失敗しました。’;
reject(resp); //rejectでcatchへ
});
}, function(resp) {
alert(“NG1”);
//NG1
wMessage = ‘【発注管理】レコード更新に失敗しました。’;
reject(resp); //catchへ
});
//成功
}).then(function(resp) {
alert(“then”);
return event;
//失敗
}).catch(function(resp) {
alert(“catch”);
システムエラー表示(resp, event.appId, event.recordId, wMessage);
return event;
});

}

 

Tokunaga さん

Promise 対応の場合、Promiseオブジェクトを返す必要があります。
そのため、関数呼び出しは、return 発注番号セット(event); になります。
あとエラー処理がわかりにくいため、then, catch のみにしました。
下記コードは、切り貼りしただけですので、検証をお願いします。

//レコード追加が正常終了した時
kintone.events.on('app.record.create.submit.success', function(event) {
return 発注番号セット(event);
});

...

function 発注番号セット(event) {

...

wMessage = '【発注管理】[発注書作成対象にする]アクションに失敗しました。';
return kintone.api(kintone.api.url('/k/v1/record', true), 'PUT', params1).then(function(resp) {
console.log("OK1",resp);
//OK1
wMessage = '【発注管理】レコード更新に失敗しました。';
return kintone.api(kintone.api.url('/k/v1/record/status', true), 'PUT', params2);
}).then(function(resp){
console.log("OK2",resp);
//OK2
return event;
}).catch(function(resp) {
console.log("catch",resp);
システムエラー表示(resp, event.appId, event.recordId, wMessage);
return event;
});

}

rex0220さん

お世話になっております。

早々のご回答ありがとうございます。頂戴した内容で修正しましたら、なんなく動きました。

Promise処理に慣れておらず、ご面倒おかけしたしました。

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