我的VBA代码未使用我的Google Distance Matrix API密钥

时间:2017-10-27 06:14:29

标签: excel vba excel-vba google-maps google-distancematrix-api

为澄清而编辑

我已经复制并调整了一些代码以连接到Google Distance Matrix API,并且我遇到了超出免费限制的问题。

我有一个帐户,我的密钥每天启用100K,所以我不确定问题究竟是什么。这适用于单次上拉至2500的免费限制,但随后返回错误消息,告诉我我已达到限制。

Public Function GetDistance(start As String, dest As String)
    Dim firstVal As String, secondVal As String, lastVal As String
    firstVal = "http://maps.googleapis.com/maps/api/distancematrix/json?
    origins="
    secondVal = "&destinations="
    lastVal = "&mode=car&language=en&ClientID=[INSERTKEYHERE]"
    Set objHTTP = CreateObject("MSXML2.ServerXMLHTTP")
    Url = firstVal & Replace(start, " ", "+") & secondVal & Replace(dest, " ", "+") & lastVal
    objHTTP.Open "GET", Url, False
    objHTTP.setRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"
    objHTTP.send ("")
    If InStr(objHTTP.responseText, """distance"" : {") = 0 Then GoTo ErrorHandl
    Set regex = CreateObject("VBScript.RegExp"): regex.Pattern = """value"".*?([0-9]+)": regex.Global = False
    Set matches = regex.Execute(objHTTP.responseText)
    tmpVal = Replace(matches(0).SubMatches(0), ".", Application.International(xlListSeparator))
    GetDistance = CDbl(tmpVal)
    Exit Function
ErrorHandl:
    GetDistance = -1
End Function

我还使用了key = [INSERTKEYHERE],但这似乎没有解决问题,甚至使该功能无效。这个问题也在这里被问到,但从未公开解决过。 Google Distance Matrix API Key Excel VBA

谢谢!

1 个答案:

答案 0 :(得分:0)

我的问题是双重的。我使用的是Client ID而不是Key,这使得API给了我免费版本,而且我没有使用https,因此被阻止了。

解决