HTTP要求のアクティビティを使って、Kintone上のアプリにレコードを1件追加したいと考えております。
以下が、Kintoneのレコード登録におけるAPI仕様になります。
対象アプリは以下となります。
仕様を読み、認証までは通っており、パラメータのプロパティに以下を設定しました。
appは合っているかと思いますが、recordの値が合っていないので、「不正なJSON文字列です」のエラーが返ってきます。
recordには以下を設定しています。
" {‘日付’: {‘value’: [2021-05-22]},‘業務内容’: {‘value’: ‘test’},‘所管、学び’: {‘value’: ‘test’}"
上記のような場合、JSON文字列になっているため、ボディに書くべきといった内容も読みましたが、理解できておりません。
色々フォーラムの内容や他記事も調べてみましたが、HTTP要求のアクティビティ野使い方や、REST APIをしっかり理解していないため、解決方法が分かりません。
以下についてご回答お願いいたします。
・recordの中身の記載形式について、合っているかどうか
・パラメータのプロパティとボディのプロパティの使い分けについて
大変お手数をおかけしますが、よろしくお願いいたします。
上記間違いがありましたので、修正しました。
ですが、エラー内容は同様でございます。
cheez_RPA
(いわさき りょうすけ (UiPath Japan MVP 2019 - 2021))
3
末尾にカッコがひとつ足りていないようです。
JSONデータをバリデート(検証)してくれるサイトがあるので、そちらで確認していただければと思います。
ご確認ありがとうございます。
ご教示いただいたバリデートサイトで確認してみたところ、確かに末尾に「}」が足りなかったため、追加して再度実行してみましたが、同じ「不正なJSON文字列です」のエラーが返ってきました。
修正内容は以下となります。
“{‘日付’: {‘value’: ‘2021-05-22’},‘業務内容’: {‘value’: ‘test’},‘所管、学び’: {‘value’: ‘test’}}”
shinji
(Shinji Miyagi / みやぎ)
5
カンマがおかしいようです。
誤)所管、学び
正)所管,学び
ご指摘いただき、ありがとうございます。
ご指摘いただいたように、'所感、学び’を’所感,学び’にして、以下のように修正しましたが、やはり同様に「不正なJSON文字列です」のエラーが返ってきました。
“{‘日付’: {‘value’: ‘2021-05-22’},‘業務内容’: {‘value’: ‘test’},‘所感,学び’: {‘value’: ‘test’}}”
cheez_RPA
(いわさき りょうすけ (UiPath Japan MVP 2019 - 2021))
7
シングルクォートを、ダブルクォートに直してみるのはいかがでしょう。
ちなみに文字列としてダブルクォートを使うには ""
と、ダブルクォートを2つ重ねればいけます。
shinji
(Shinji Miyagi / みやぎ)
8
失礼しました。「所管、学び」は列名なんですね。勘違いしました。
いわさきさんの言う通り、ダブルクォートで書いてみると通るかもしれません。
{“日付”: {“value”:“2021-05-22”},“業務内容”: {“value”: “test”},“所管、学び”: {“value”: “test”}}
コードでセットする際は「“”」と2つ重ねて書くと1つの「"」になります。
“{”“日付”“: {”“value”“:”“2021-05-22"”},““業務内容””: {““value””: ““test””},““所管、学び””: {““value””: ““test””}}"
値をセットするのが大変ならString.Formatで整形すると楽かと思います。
String.Format(“{{”“日付”“: {{”“value”“:”“{0}”“}},”“業務内容”“: {{”“value”“: “”{1}”“}},”“所管、学び”“: {{”“value”“: “”{2}”“}}}}”, “2021-05-22”, “test”, “test”)
いわさきさん、ご指摘いただき、ありがとうございます。
ご指摘いただいた内容をもとに、
みやぎさんにも記載いただいたコードを活用してみましたが、同様のエラーが返ってきました💦
何が問題なのか、全くわからないです💦
みやぎさん、ご指摘いただき、ありがとうございます。
みやぎさんにも記載いただいたコードを活用しつつ、以下のようにパラメータプロパティにセットしましたが、同じエラーが返ってきました。
“{“日付”: {“value”:“2021-05-22”},“業務内容”: {“value”: “test”},“所感、学び”: {“value”: “test”}}”
また「“”」と2つ重ねて書くパターンもやりましたが、同様のエラーが返ってきました。
“{”“日付”“: {”“value”“:”“2021-05-22"”},““業務内容””: {““value””: ““test””},““所感、学び””: {““value””: ““test””}}"
※すみません。所管ではなく、所感でした。誤字がありました。
cheez_RPA
(いわさき りょうすけ (UiPath Japan MVP 2019 - 2021))
11
いちど、レコードの追加ではなく、レコードの取得を試してみてはいかがでしょうか。
取得の操作で得られるJSONを見て、追加したいもののJSONと比較してみる、という案です。
返信遅くなり、申し訳ございません。
また何度もアドバイスいただき、本当にありがとうございます。
ご助言頂いた通り、一度、レコードの取得でJSONを確認しましたところ、以下★となっていました。
“業務内容”や、”所感、学び”が”文字列__複数行_”、”文字列__複数行_0”になっていることが確認できたため、以下のように変更して投げてみましたが、また同様の「不正なJSON文字列です」のエラーが返ってきました💦
“{”“日付”“: {”“value”“:”“2021-05-22"”},““文字列__複数行_””: {““value””: ““test””},““文字列__複数行__0””: {““value””: ““test””}}"
仕様には、以下のような記載もあったので、全てのフィールドの値は必要ないと思っていますが、よくわかっておりません。
「 * 省略した場合は、全フィールドの値が初期値で登録されます。
- 存在しないフィールドコードを指定した場合、その部分は無視されます。」
★以下が、レコード取得の結果となります。
{
“record”: {
“レコード番号”: {
“type”: “RECORD_NUMBER”,
“value”: “1”
},
“更新者”: {
“type”: “MODIFIER”,
“value”: {
“code”: “XXX”,
“name”: “XXX”
}
},
“作成者”: {
“type”: “CREATOR”,
“value”: {
“code”: “XXX”,
“name”: “XXX”
}
},
“ラジオボタン”: {
“type”: “RADIO_BUTTON”,
“value”: “達成”
},
“ドロップダウン”: {
“type”: “DROP_DOWN”,
“value”: “XX”
},
“$revision”: {
“type”: “REVISION”,
“value”: “1”
},
“更新日時”: {
“type”: “UPDATED_TIME”,
“value”: “2021-05-21T00:55:00Z”
},
“文字列__複数行__0”: {
“type”: “MULTI_LINE_TEXT”,
“value”: “(サンプル)受注が確定しました!\n”
},
“文字列__複数行_”: {
“type”: “MULTI_LINE_TEXT”,
“value”: “(サンプル)サイボウズ株式会社を訪問しました。\n\n”
},
“添付ファイル”: {
“type”: “FILE”,
“value”:
},
“作成日時”: {
“type”: “CREATED_TIME”,
“value”: “2021-05-22T00:55:00Z”
},
“日付”: {
“type”: “DATE”,
“value”: “2021-05-22”
},
“$id”: {
“type”: “ID”,
“value”: “1”
}
}
}
kai0707
(Minoru Matsumura)
13
同様の問題に直面しまして、こちらのスレッドに辿りつきました。
色々試して成功した結論としては、HttpClientアクティビティの、Parametersプロパティではなく、BodyプロパティにしかるべきJSONを文字列として構成して代入する。が解決策でした。
なので、app も record もまとめてJSON文字列で記載して、Bodyプロパティに代入。で上手くいくかと思います。
2 Likes