EXCEL VBAによりkintoneアプリデータを取得したいと考えております。
但し、kintoneアプリのデータ件数が500件を超えているために、試行錯誤を繰り返しております。
offsetを使用しDo Whileにてoffset値を変えながらと思い、後述するコードにてデータ取得を試みております。
しかしながら、初回の parseJSON(strJSON)以降では問題なく、データを取得できているのですが、Do Whileによる2回目にて「実行時エラー’424’ オブジェクトが必要です」ととしてエラーになります。
エラーが発生する行は If objJSON(“records”).Count = 0 Then Exit Do 行になっております。
原因と解決方法が分らず、どなたかご助言をお願いできませんでしょうか?
最終目的は1000件ほどのデータを取得したいのですが、下記、ソース上は5件ずつにてテスト中です。
尚、query文のoffset値の確認の為、途中の内容を確認(debug.print)しましたが、
初回 limit 5 offset 0
2回目limit 5 offset 5
になり、offset値は想定通りになっております。
又、初回時にoffset値を5とした場合も初回はデータ入手できますが、2回目には実行時エラーとなります。
よろしくお願い致します。
Option Explicit
Public AppID As Integer
Public APItoken As String
Public Domain As String
Public kintoneURL As String
Sub connect_kintone()
AppID = 999 '接続したいアプリ番号
APItoken = "ABCDEFGHIJKLMN" '接続したいアプリのAPIトークン
Domain = "My_Domain.cybozu.com" 'kintone独自ドメイン
kintoneURL = "https://" & Domain & "/k/v1/records.json?app=" & AppID
End Sub
Sub get_kintone()
Call connect_kintone 'kintoneの接続情報を呼び出す
Dim KintoneQuery As String
Dim offset As Long
Dim limit As Long
Dim totalRecords As Long
Dim objHttpReq As Object
Dim strJSON As String
Dim objJSON As Object
Dim record As Variant
Dim insertRow As Long
offset = 0
limit = 5
totalRecords = 0
Do
KintoneQuery = "limit " & limit & " offset " & offset
kintoneURL = kintoneURL & "&query=" & WorksheetFunction.EncodeURL(KintoneQuery)
Debug.Print KintoneQuery
Set objHttpReq = CreateObject("MSXML2.XMLHTTP")
objHttpReq.Open "GET", kintoneURL, False
objHttpReq.setRequestHeader "X-Cybozu-Api-Token", APItoken
objHttpReq.send (Null)
strJSON = objHttpReq.responseText
Set objJSON = parseJSON(strJSON)
If objJSON("records").Count = 0 Then Exit Do
For Each record In objJSON("records")
' 取得したデータをExcelシートに転記する処理
' 例: Cells(insertRow, 1).Value = record("フィールドコード")
insertRow = insertRow + 1
Next record
offset = offset + limit
totalRecords = totalRecords + objJSON("records").Count
Loop While objJSON("records").Count = limit
End Sub