新規投稿
フォローする

VBAでkintoneに1レコード登録したいのですが、データが登録されずに空レコードが追加される

エクセルに記入したデータをkintoneに1レコードを登録したいのですが、フィールドコードを指定しても値が登録されません。レスポンスデータ(レコード番号)は正常に帰ってきます。

送っているデータは以下の通りです。

"{"app": 220,"record": [{"実施場所": {"value": "\u30D5\u30A7\u30CB\u30C3\u30AF\u30B9\u30B7\u30B9\u30C6\u30E0\u7814\u7A76\u6240"}}]}"

データを登録するVBAです。

Dim jsonData As New Scripting.Dictionary
JsonData.Add "app", 999
JsonData.Add "record", New Collection
Dim jsonRecord() As New Scripting.Dictionary
ReDim Preserve jsonRecord(0)

jsonRecord(0).Add "実施場所", New Scripting.Dictionary
jsonRecord(0)("実施場所")("value") = Range("F7").Value
jsonData("record").Add jsonRecord(0)
jsonRequest = JsonConverter.ConvertToJson(jsonData, Whitespace:=4)

kintoneのアプリアクセス権、レコードアクセス権、フィールドアクセス権はすべて”Everyone”で権限付与しています。

0

2件のコメント

Avatar
村濱一樹

VBAには詳しくないですが、送っているデータが少しおかしそうな気がします

{"app": 220,"record": [{"実施場所": {"value": "登録したい内容"}}]}

record の中は配列ではなくObjectである必要があるため、下記のようになるべきです。参考

{"app": 220,"record": {"実施場所": {"value": "登録したい内容"}}}

あるいは、「実地場所」というフィールドコードが間違っている場合には起きているような空レコードが作られる挙動になります。

村濱一樹により編集されました
1
Avatar
斎藤

ご指摘の通り、配列にしているのが原因でした。

recordのcollectionをやめ、Scripting.Dictionaryで作成されたレコードデータを登録するように変更しました。

ありがとございました。

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