kintone.proxy内でのeventをfinallyで返すと反映されない(then/catchであればOK)

app.record.create.submitイベント内でkintone.proxyを使用しています。

実行結果をeventに格納して返す際に、finally節でreturn eventしても反映されず、thenおよびcatch節でreturn eventするとeventが反映されます。

下記のコードは、本来であればreturn eventをfinallyでのみ宣言してthenやcatchではreturn eventを書きたくないのですが、上記現象からreturn eventを2箇所に書いています。

この現象について、下記2点についてアドバイスいただけないでしょうか。

・仕様かどうか?

・より良い記載方法

(function(){'use strict';consturl='https://hohgeoge';// POSTリクエストconstmethod='POST';constheaders={'Content-Type':'application/json'};kintone.events.on(['app.record.create.submit'],(event)=\>{returnkintone.proxy(url,method,headers,event).then((resp1)=\>{if(resp1[1]===200){event.record.顧客.value='顧客名';}else{thrownewError('外部呼び出し失敗');}returnevent;}).catch((resp)=\>{event.error=resp.message;returnevent;}).finally(()=\>{console.log(event);// \<\< このeventには値が入っている// return event; \<\<\<これをしても反映されない});});})();

Shoharakiさん

こんにちは。

 

finallyについて言及したドキュメントは見つけられなかったのですが

「最後のハンドラーが return しない場合、フィールドの値を更新しません。」というkintoneの制約があります。

 

ご記載の通り、デバッグするとfinallyのeventには値が入っています。

ただ、finallyの前には必ずthen/catchのいずれかを経由する必要があるため

そのthen/catch内でreturnしないと正しくeventが引き継がれない(値の更新対象とならない)のではないでしょうか。

 

正確なところは、サイボウズ様のAPIサポートにお問い合わせいただくと回答得られるかもしれません。

 

コードについては、Shoharakiさんのご記載内容が一般的な書き方と思います。

少なくとも値更新のためにthenは要ると思います。

catch/finallyは必要に応じて記載するといったところでしょうか。