return eventしてもレコードが書き換えられない

以下の様なコードを作成したのですが、

event.record[‘LeaderApr’][‘value’] = "承認"の値が書き換えられません。

実際にconsole.log(event)を見るとevent.record[‘LeaderApr’][‘value’]には"承認"と文字列が代入されているのですがHTML上何も記入されない理由と解決方法をご教示願います。

(function() {
“use strict”;

//次ステータスに進んだ(クリック)時に実行されるイベント
kintone.events.on([“app.record.detail.process.proceed”], function(event){

var loginUserCode = kintone.getLoginUser()[‘code’]; // ログイン名を取得
var path = ‘/v1/user/groups’;
var data = {
code: loginUserCode // ログインユーザーを指定
};
var cStatus = event.status.value;

kintone.api(path, ‘GET’, data, function(resp){
var record = kintone.app.record.get(); // レコード情報を取得
var grouplen = resp.groups.length;

for(var i=0;i<grouplen;i++){
if(resp.groups[i].name==“【運】_投運部長”){
var groupname=“【運】_投運部長”;
console.log(groupname)
break
}else if (resp.groups[i].name==“【運】_財企部長”){
var groupname=“【運】_財企部長”;
console.log(groupname)
break
}else if (resp.groups[i].name==“【運】_総経部長”){
groupname=“【運】_総経部長”;
console.log(groupname)
break
}else{
var groupname=“nontitle”
}

}

console.log(cStatus)
if(cStatus==“【運用会社_総経】上長1or上長2_確認”)
event.record[‘LeaderApr’][‘value’] = “承認”
})

// console.log(event)
return event;

});

})();

ryoryo さん

kintone.events.on の中で api などの非同期処理を実行した後に return event したい場合は Promise オブジェクトを return する必要があります。
※Promise オブジェクトが return できるイベントは以下を参考にしてください。

https://developer.cybozu.io/hc/ja/articles/204564604

今回使用されているプロセス承認時のイベントは Promise オブジェクトの return が可能なので kintone.api() の部分を Promise に書き換えて return してあげれば 値が変更されるはずです。

ありがとうございます、途方に暮れていたのでとてもご助言がうれしいです。

 

重ねて出申し訳ございませんが、下記ののとおりPromiseで書き換えた結果、

show.js:254 Uncaught Error: You cannot call kintone.app.record.get() in handler or during processing a handler.

としてgetができないエラーがブラウザで出力されてしまいました。

kintone.app.record.get()はevents.onでは使えないというという記事は見つけたのですが

Promiseを使わない場合には、このようなエラーが出力されなかったため、また原因がわからす八方塞がりになってしまいました。

もしよろしければ解決方法をご教示いただけると大変うれしいです。

宜しくお願い申し上げます。

 

kintone.events.on([“app.record.detail.process.proceed”], function(event){

return new kintone.Promise(function(resolve, reject) {
var loginUserCode = kintone.getLoginUser()[‘code’]; // ログイン名を取得
var path = ‘/v1/user/groups’;
var data = {code: loginUserCode};// ログインユーザーを指定
var cStatus = event.status.value;
kintone.api(path, ‘GET’, data, function(resp){
var record = kintone.app.record.get(); // レコード情報を取得
var grouplen = resp.groups.length;

for(var i=0;i<grouplen;i++){
if(resp.groups[i].name==“【運】_投運部長”){
var groupname=“【運】_投運部長”;
break
}else if (resp.groups[i].name==“【運】_財企部長”){
var groupname=“【運】_財企部長”;
break
}else if (resp.groups[i].name==“【運】_総経部長”){
groupname=“【運】_総経部長”;
break
}else{
var groupname=“nontitle”
}

}

if(cStatus==“【運用会社_総経】上長1or上長2_確認”){
event.record[‘LeaderApr’][‘value’] = “承認”
}

resolve(event);
})
})

});

そもそも

var record = kintone.app.record.get(); // レコード情報を取得

が不要なコードでした。失礼いたしました。

無事解決いたしましたので御礼申し上げます。