app.record.create.showでのRest APIで取得したデータ入力方法について

app.record.create.showのイベントで、Rest APIでデータを取得しそのデータをフィールドに入力したいと思っています。
Rest APIは非同期なのでPromiseにて対応しようと思ったのですが、
app.record.create.showについては、Promiseに対応したいないのか下記のエラーが発生します。

app.record.create.show is not allowed to return “Thenable” object.

cybozu.com developer networkにもapp.recor.create.showはPromiseに対応しているという記載がみあたりません。

この問題を解決する何か別の方法はありませんでしょうか。
ご教授願います

Akira Takahashiさん
cstapの落合です。

レコードに値をセットする を使ってみてはどうでしょう?

下記、記載がありました。
イベントハンドラ内では使用できないようです。


kintone.events.on のインベントハンドラ内で kintone.app.record.set および kintone.mobile.app.record.set を実行することはできません。 上記のイベントハンドラ内ではレコードデータの取得は引数のeventオブジェクトを、レコードデータの更新はeventオブジェクトのreturnを使用してください。

Akira Takahashiさん

kintone.api の callback で使用するのであって、記述上kintone.events.on の中に書いてたとしても非同期でkintone.events.on のイベントから出る点に注意して下さい。

落合様

もう少し内容を確認してください。

理解としては、今回はKintone.apiのコールバックにあたるが、kintone.events.onの中で書かれているため、レコードに値をセットする為にはeventオブジェクトを使用する必要があり、kintone.app.record.setを使用することが出来ない。
であっていますでしょうか。

もし、あっているのであれば他の方法はありますでしょうか。

Akira Takahashiさん

kintone.events.onの中に書いているからといって、別のイベントなので、注釈には該当しません。
kintone.api の callback で kintone.app.record.get でレコード情報を取得し、kintone.app.record.set でセットすることができます。

また、他のイベントで変更されている場合、その変更が反映されていないレコード情報を使ってしまうことになるので、kintone.api の callback では、event オブジェクトのレコード情報は基本使わない方が良いでしょう。

以上、参考になりますでしょうか?

落合様

ありがとうございました。
無事意図した動作ができました。
また、何かありましたらよろしくお願いします。

Akira Takahashiさん
解決できたようで良かったです!