kintone初心者です。
Bアプリの[生産状況]の値を元に、Aアプリの[仕掛確認]のデータを変更したいです。
上記のように見様見真似で作成しましたが、
構文が無効のため処理できません、とのエラーが返ってきます。
書き方がわかっていないので、どこが悪いのか教えてください。
kintone初心者です。
Bアプリの[生産状況]の値を元に、Aアプリの[仕掛確認]のデータを変更したいです。
上記のように見様見真似で作成しましたが、
構文が無効のため処理できません、とのエラーが返ってきます。
書き方がわかっていないので、どこが悪いのか教えてください。
kanafukiさん
出ているエラーの詳細が分からないですが、SyntaxErrorが出力されているのでしょうか?
SyntaxErrorが出力されているのであれば、よくやるのは括弧の数があっていないなどですが、
パッと見の数はあっていそうなので、どこかが全角になっているなどでしょうか。
また、SyntaxError ではないですが、パッと見た範囲では、event オブジェクトのリターンが
処理外で実行されているので、参照エラーが出力されるかと思います。
eventオブジェクトに関しては、生成した kitnone.event.on の中でリターンしてください。
サクラエビ様
コメントありがとうございます。
「データの取得時にエラーが発生しました」とあるので、UPDATEのrecordの宣言の仕方が悪いのではないかと思うのですが、どうでしょうか?
括弧の数と全角は確かめましたが大丈夫でした。
eventのオブジェクトのリターンは処理内に変更しましたがエラーのままです。
kanafuki さん
「エラーの場合はメッセージを表示する」とコメントで記載のある方に、処理がいっているということですね?
となると、APIリクエストが失敗していると思うので、kanafuki さんのコメントの通り、対象のアプリやレコード番号が違うなど、
リクエストの内容に間違いがあると思われる状況ですが、ここからは環境に依存する状況になります。
アラートでエラーメッセージの内容を出力されているようですが、そちらに詳細が出力されていないでしょうか?
サクラエビ様
はい、アラートでエラー表示されています。
エラーメッセージは「レコード取得時にエラーが発生しました。入力内容が正しくありません」となっています。
アプリIDも受注IDもあっていると思います。
「生産状況」もアラートで取得してみましたが、データはとれているようです。
対象のフィールドコード「仕掛確認」の書き方がおかしいでしょうか?
kanafukiさん
レコードの更新時は、基本的に存在しないフィールドや形式の誤りは、無視されて実行されるので、
「入力内容が正しくありません」のエラーが出ることがあっただろうか?という疑問があります。
現状エラーのmessege のみを出力している状況と思うので、コンソールのNWタブから、
対象のAPIリクエストの実行時に出ているエラーメッセージ(messegesやエラーコードなど)の
詳細を確認して、教えてもらえますでしょうか?
デバッグに関して不明であれば、こちらなど参考にして実行してもらえればいいかと思います。
サクラエビ様
コンソールでは「HTTP400:要求が正しくありません ー 構文が無効であるため、サーバーで要求を処理できませんでした。」
と表示されました。
400の要求が正しくありませんですか。
記載している処理以外の処理は動いていないのですよね?
試しに記載されている情報をまねて、以下の情報で試してみましたが、手元では正常に動作しましたね。
条件:
フィールドコードを受注ID、仕掛確認、生産状況の数値フィールドをアプリに配置
コード詳細
(function() {
"use strict";
var getValue = function(field){
var value = parseFloat(field);
if(!Number.isNaN(value)){
return value;
}else{
return 0;
}
}
kintone.events.on("app.record.create.submit.success", function(e) {
var record = e.record;
var body = {
app:4040,
id:getValue(record['受注ID'].value),
record:{
['仕掛確認']:{
value:record['生産状況'].value
}
}
};
kintone.api('/k/v1/record','PUT',body,function(resp){
window.alert("更新しました");
},function(resp){
window.alert("エラー");
console.log(resp);
})
return e;
});
})();
あらためて状況の確認なのですが、記述されている alert(errmsg); にて、
「レコード取得時にエラーが発生しました。入力内容が正しくありません」のエラーが出力され、
コンソールには、今回の API 実行(更新処理)のタイミングで
「HTTP400:要求が正しくありません ー 構文が無効であるため、サーバーで要求を処理できませんでした。」
と表示がされているのでしょうか?
サクラエビ様
正常に動作されたのですね………。
なぜでしょう。
こちらでは状況の確認の通り、エラーメッセージが表示され、コンソールにもそのように表示されています。
書き換えたいのはドロップダウンの内容でフィールドコードが「仕掛確認」、
取得している内容はラジオボタンの内容でフィールドコードが「生産状況」です。
この辺はvalueだけの問題なので関係ないですよね?
ちなみにサクラエビ様のコード詳細をコピペして動作してもエラー内容・コンソール内容共に一緒でした。
kanafukiさん
ラジオボタンとドロップダウンを利用しているのですね。
現在の処理では項目値が一致するのであれば、更新できます。
ただし、ドロップダウンに存在しない選択肢で更新しようとした場合には、400エラーにて、以下が出てしまいます。
※生産状況に sample が存在し、仕掛確認にsample がない場合
{“code”:“CB_VA01”,“id”:“vhX3arhKsSsZm1iElZvL”,“message”:“入力内容が正しくありません。”,
“errors”:{“record.仕掛確認.value”:{“messages”:[“"sample"は選択肢にありません。”]}}}
リクエストが無視されるとざっくり書いたのですが、間違える場所によっては、上記のようにエラーが出ます。
また、完全に見落としていたのですが、受注IDが数値以外であった場合、0 を返す処理になっていますが、
更新時にIDに0を指定できないので、数値以外もしくは、直接レコードIDに0を指定した場合、400のエラーを返します。
コンソール上では下記になります。
{“code”:“CB_VA01”,“id”:“YabVjdaobY6BIQXUHSmJ”,“message”:“入力内容が正しくありません。”,
“errors”:{“id”:{“messages”:[“最小でも1以上です。”]}}}
画面上のメッセージはどちらも
「レコード取得時にエラーが発生しました。入力内容が正しくありません」と出ますが、
コンソール上のメッセージが違うので、状況としては違うかもです。
一応、確認ですが、上記などに該当していないでしょうか?
コンソール上で出ているエラーに関しては、ステータスの変更APIで出たなどの書き込みはありますが、
なにかを見落としているのか、依然レコードの更新では出せていないです。。。
サクラエビ様
やっと更新ができました!
原因は、更新先側でデータ作成後に必須項目を付け足したにも関わらず、
その必須項目にデータをまだ入力していないためでした。
なので、PUT処理がダメというよりも更新先のデータ不備でした。
初心者の私に親身にご相談にのっていただき、本当にありがとうございました。
サクラエビ様のおかげでコンソールの仕方を勉強させていただきました。
今回にめげずに開発をがんばります!
kanafukiさん
そういう理由でのエラーでしたか・・・
それは想定していなかったです。
ひとまず更新ができてよかったです!
開発がんばってください!
このトピックはベストアンサーに選ばれた返信から 3 日が経過したので自動的にクローズされました。新たに返信することはできません。