为澄清而编辑
我已经复制并调整了一些代码以连接到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
谢谢!
答案 0 :(得分:0)
我的问题是双重的。我使用的是Client ID而不是Key,这使得API给了我免费版本,而且我没有使用https,因此被阻止了。
解决