Excel VBA API GET请求

时间:2017-10-24 20:37:42

标签: json excel vba shopify

我在VBA中发出了GET请求,并且我能够将返回数据的第一次迭代解析为excel表。但是它不会开始第二次迭代。

更多信息:我正在使用Shopify API获取所有订单。在Postman中,我可以看到总共不同订单(600+)的多个记录。我可以从第一个返回的订单中解析我需要的所有信息,但是我无法循环到第二个。

我在这里使用VBA-JSON库:https://github.com/VBA-tools/VBA-JSON

我已在下面发布了我的代码......

我可以看到x是订单的总数,但是增量V不能帮助我获得第二个订单信息。

Sub ShopifyOrderAPI_GET()
Dim http As Object, str As Variant
Set http = CreateObject("MSXML2.XMLHTTP")

    With http
        .Open "GET", "https://SHOPNAME.myshopify.com/admin/orders.json?status=any", False
        .Send
        str = Split(.responseText, "{""orders"": [ {")
        
    End With
    
    x = UBound(str)
    
    Dim JSON As Object
    Set JSON = JsonConverter.ParseJson(http.responseText)
    
    On Error Resume Next
    For Each V In x
    V = 1
    
        Cells(V, 1) = JSON("orders")(1)("id")
        Cells(V, 2) = JSON("orders")(1)("email")
        Cells(V, 3) = JSON("orders")(1)("closed_at")
        Cells(V, 4) = JSON("orders")(1)("created_at")
        Cells(V, 5) = JSON("orders")(1)("updated_at")
        Cells(V, 6) = JSON("orders")(1)("number")
        Cells(V, 7) = JSON("orders")(1)("note")
        Cells(V, 8) = JSON("orders")(1)("token")
        Cells(V, 9) = JSON("orders")(1)("gateway")
        Cells(V, 10) = JSON("orders")(1)("total_price")
        Cells(V, 11) = JSON("orders")(1)("subtotal_price")
        Cells(V, 12) = JSON("orders")(1)("total_tax")
        Cells(V, 13) = JSON("orders")(1)("currency")
        Cells(V, 14) = JSON("orders")(1)("financial_status")
        Cells(V, 15) = JSON("orders")(1)("total_discounts")
        Cells(V, 16) = JSON("orders")(1)("total_line_items_price")
        Cells(V, 17) = JSON("orders")(1)("buyer_accepts_marketing")
        Cells(V, 18) = JSON("orders")(1)("name")
        Cells(V, 19) = JSON("orders")(1)("processed_at")
        Cells(V, 20) = JSON("orders")(1)("tags")
        Cells(V, 21) = JSON("orders")(1)("contact_email")
        Cells(V, 22) = JSON("orders")(1)("order_status_url")
        Cells(V, 23) = JSON("orders")(1)("discount_codes")(1)("code")
        Cells(V, 24) = JSON("orders")(1)("discount_codes")(1)("amount")
        Cells(V, 25) = JSON("orders")(1)("fulfillment_status")
        Cells(V, 26) = JSON("orders")(1)("tax_lines")(1)("title")
        Cells(V, 27) = JSON("orders")(1)("tax_lines")(1)("price")
        Cells(V, 28) = JSON("orders")(1)("tax_lines")(1)("rate")
        Cells(V, 29) = JSON("orders")(1)("tags")
        Cells(V, 30) = JSON("orders")(1)("line_items")(1)("title")
        Cells(V, 31) = JSON("orders")(1)("line_items")(1)("sku")
        Cells(V, 32) = JSON("orders")(1)("line_items")(1)("quantity")
        Cells(V, 33) = JSON("orders")(1)("line_items")(1)("price")
        Cells(V, 34) = JSON("orders")(1)("line_items")(1)("variant_title")
        Cells(V, 35) = JSON("orders")(1)("line_items")(1)("properties")(1)("name")
        Cells(V, 36) = JSON("orders")(1)("line_items")(1)("properties")(1)("value")
'        Cells(V, 37) = JSON("orders")(1)("billing_address")(1)("name")
'        Cells(V, 38) = JSON("orders")(1)("billing_address")(1)("address1")
'        Cells(V, 39) = JSON("orders")(1)("billing_address")(1)("address2")
'        Cells(V, 40) = JSON("orders")(1)("billing_address")(1)("city")
'        Cells(V, 41) = JSON("orders")(1)("billing_address")(1)("zip")
'        Cells(V, 42) = JSON("orders")(1)("billing_address")(1)("country")
'        Cells(V, 43) = JSON("orders")(1)("billing_address")(1)("country_code")
'        Cells(V, 44) = JSON("orders")(1)("billing_address")(1)("latitude")
'        Cells(V, 45) = JSON("orders")(1)("billing_address")(1)("longitude")
'        Cells(V, 46) = JSON("orders")(1)("shipping_address")(1)("name")
'        Cells(V, 47) = JSON("orders")(1)("shipping_address")(1)("address1")
'        Cells(V, 48) = JSON("orders")(1)("shipping_address")(1)("address2")
'        Cells(V, 49) = JSON("orders")(1)("shipping_address")(1)("city")
'        Cells(V, 50) = JSON("orders")(1)("shipping_address")(1)("zip")
'        Cells(V, 51) = JSON("orders")(1)("shipping_address")(1)("country")
'        Cells(V, 52) = JSON("orders")(1)("shipping_address")(1)("country_code")
'        Cells(V, 53) = JSON("orders")(1)("shipping_address")(1)("latitude")
'        Cells(V, 54) = JSON("orders")(1)("shipping_address")(1)("longitude")
    V = V + 1
    Next V
End Sub

我出错的任何想法?非常感谢任何协助/指导。

这是我第一次在VBA中使用API​​。

0 个答案:

没有答案