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さん
解決できたようで良かったです!