app.record.create.submit.successではREST APIが動かないが、app.record.edit.submit.successでは動くプログラム

いつもお世話になっております。

下記プログラムでアプリAレコード登録時にアプリBへアプリAのURLを貼り付ける処理を行っています。

editでは動きますが、createではうまく動かない状況が発生しています。

開発ツールでは「https://ドメイン.cybozu.com/k/146/show#record=373 に移動しました」と出ていますが、どうしてこのような表示がされてしまうのかわかりません。

原因をご存知の方はご教授いただけますと幸いです。

どうぞよろしくお願いいたします。

 

(function() {

“use strict”;

var aAppId = 93; //マスタアプリのID

console.log(‘マスタ更新用’);

kintone.events.on([‘app.record.create.submit.success’,

‘app.record.edit.submit.success’], async function(event) {

console.log(‘マスタ更新用イベントIN’);

var rec = await event[‘record’];

if(!rec[‘マスタのレコード番号’][‘value’]){

return event;

}

 

console.log(rec[‘レコード番号’][‘value’]);

var hako1 = await rec[‘マスタのレコード番号’][‘value’]; //材料マスタアプリレコードID

var hako2 = await rec[‘レコード番号’][‘value’]; //材料マスタ[一般名]アプリのURL

var hako3 = await ‘https://ドメイン.cybozu.com/k/146/show#record=’ + hako2;

//PUT//////////////////////////////////////////////////////////////////////////////////////////////////////////////////

//書き込み用配列

var parm = await {

‘app’:aAppId,

‘id’:hako1 , //材料マスタアプリレコードID

‘record’:{

 

//1つめのデータ

‘alert’:{‘value’: hako3},

 

},

};

 

await kintone.api(‘/k/v1/record’,‘PUT’,parm,

function(resp){console.log(resp);},

function(err){console.log(err);}

)

return event;

});

})();

kuma さん

原因は、わかりませんが、パッと見たところ不要な await がたくさんあります。

とりあえず、「await kintone.api」以外の await は不要だと思いますので、取って見てはいかがでしょうか?

アプリBへアプリAのURLを貼り付ける処理を非同期処理で記載されていないので

処理が終わる前にレコード登録後の画面に遷移しているのではないでしょうか

kintone API で Promise を使ってみよう!

 

rex0220さん

いつも大変お世話になっております。

お返事いただきありがとうございます。ご指摘の通りにしてみました。

先ほど気づいたのですが、この現象はFirefoxでのみ発生するようで、

Google Chromeでは発生しませんでした…。

kin太郎さん

お返事いただきありがとうございます。

ご教授いただいた方法を試してみましたが、残念ながら改善

しませんでした。