新規投稿
フォローする

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

1件のコメント

Avatar
koichi

Shoharakiさん

こんにちは。

 

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

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

 

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

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

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

 

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

 

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

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

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

1
サインインしてコメントを残してください。