データ更新について

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 日が経過したので自動的にクローズされました。新たに返信することはできません。