新規投稿
フォローする

取得したデータをフィールドに反映したい

JavaScript、API初心者です。

データ取得ボタンを押下し、商品コードをキー項目に外部APIで取得した商品名を商品名フィールドに反映したいのですが、うまく反映されません。

似たような投稿を見て、 kintone.app.record.set() を使用することは分かったのですが、コードのどの位置に記載すればよいのかわからず。。。

どなたか解決策をご教示いただけますと幸いです。よろしくお願いいたします。

 

0

6件のコメント

Avatar
FM

位置的には問題ないですが、kintone.app.record.set()の引数には、定められた構造のJSONの値を渡さなければいけません。
上記コードではrecordsを渡していますが、パッと見てrecordsが宣言されている場所が分からないので判断できないのですがrecordsの構造は引数に適していますでしょうか?(適していない場合、エラーになると思います)

ゼロから定められた構造のJSONを作るのは手間なので、kintone.app.record.set()の前にkintone.app.record.get()を利用して返ってきたJSONを編集して引数にするのがお手軽です。
レコードに値をセットする を参考にしてみてください。

0
Avatar
yurika

FMさん

ご回答ありがとうございます。

32行目にvar records = kintone.app.record.get();を追加してみたのですが、フィールドに反映されませんでした。

取得したデータはちゃんとフィールド値に入っているのですが画面上に反映されず苦戦しています。。

0
Avatar
FM

実行タイミングがapp.record.detail.showなのを見落としていました。失礼致しました。
app.record.detail.showの場合は、kintone.app.record.get()が使えないのでレコードの更新(1件) のようにする必要があります。
PUTのAPI実行後に画面を再リロードする処理を追記することで画面上も反映されたように見えると思います。

FMにより編集されました
0
Avatar
yurika

FMさん

app.record.detail.showの場合はkintone.app.record.get()使えないんですね。勉強になりました!

mySpaceFieldButton.onclick = function ()から下のコードを書き換えて、アラートで'データの取得が完了しました。'が出るようになったのですが、

やはり画面上に反映されません。。コードが間違っていましたらご教示いただけますと幸いです><

0
Avatar
FM

var body...で宣言されているappとidの値は意図的に文字列に置き換えていますか?
そうでない場合、appには更新対象のアプリID、idには更新対象のレコードID(現在開いているレコードID)を指定してください。
アプリIDはkintone.app.getId()、レコードIDは外部データ取得のAPI実行前にevent.record.$idを変数に入れておくことで取得できます。

また、product()内のkintone.apiは非同期処理になるので、product()の終了を待たずにlocation.reload()とwindow.alert()が実行されてしまいます。
productの// success以下に記載することをお勧めします。

上記を試してもうまく動かない場合は、開発者ツールでどんなエラーが出ているか確認してみてください。

あと、前の返信で「app.record.detail.showの時はkintone.app.record.get()が使えない」と書きましたが、正しくは「app.record.detail.showの時はkintone.app.record.set()が使えない」でした…。

0
Avatar
yurika

FMさん

教えていただいたとおりにコードを書き換えたところ、無事にフィールドに反映することができました!

何度もお力添えいただき本当にありがとうございます。

kintoneAPI奥が深いですね。。とても勉強になりました。

0
ログインしてコメントを残してください。