ExcelVBAでのアプリへの1件登録について。

ExcelVBAからXMLHTTPRequestでkintoneアプリにレコードを1件登録してみようと思いやってみたのですが、うまくいきません。

以下コードの一部です。

strUrl = https://devyzsych.cybozu.com/k/v1/record.json?app=アプリ番号

Set objXhr = CreateObject(“MSXML2.XMLHTTP”)

objXhr.Open “POST”, strUrl, False

※ここで必要なリクエストヘッダ設定

※ “Host”、“X-Cybozu-Authorization”、"Content-Type"の値を設定

objXhr.send (strJson)

strJsonの中身は以下です

{“app”:kintone.app.getId(),“record”:{“end_user_name”:{“value”:“test_company”},“gyosyu_name”:{“value”:“test_gyosyu”},“compe_name”:{“value”:[“compe1”,“compe2”]}},“__REQUEST_TOKEN__”: kintone.getRequestToken()}

JSONLibのConvertToJsonで上記を変換したのをsendで渡してます。

この結果エラーがかえってきます。

エラー内容は、statusが400、responseBodyが以下です。

「{“code”:“CB_VA01”,“id”:“xxxxxxxxxx”,“message”:“入力内容が正しくありません。”,“errors”:{“app”:{“messages”:[“必須です。”]}}}

どこが必須なのかもわからず困ってます。

どうかご教授お願いします。

桑原さん

いくつか JavaScript API をごっちゃになっているようです。

その結果、app が指定されていない状態です。

strUrl = https://devyzsych.cybozu.com/k/v1/record.json

URL に?app=アプリ番号は不要です。アプリ番号はリクエストボディーに指定します。

“app”:kintone.app.getId() 「kintone.app.getId()」は、ブラウザーのJavaScript上でしか使えません。

“app”:xxx アプリ番号を指定しましょう。

“__REQUEST_TOKEN__”: kintone.getRequestToken()

ブラウザーのJavaScript上でAPIを使うときに指定します。VBA では不要です。

 

{"app":xxx,"record":{"end_user_name":{"value":"test_company"},"gyosyu_name":{"value":"test_gyosyu"},"compe_name":{"value":["compe1","compe2"]}}}

 

桑原ともうします。

ご返信いただきましてありがとうございました。

app番号をrequestBodu(json内)に定義して、kintoneAPI関数をjsonに含まないようにしたらうまく登録できました。

まだkintoneを操作し始めて間もなため、調べてもわからないことがあれば問い合わせさせていただきます。

どうぞよろしくお願いします。