Jump to content
cbreason

Conectar VB de Excel (macros) con API de Google Maps

Recommended Posts

Hola amigos.

Mi problema es el siguiente: trabajando en excel mediante macro VBA, pretendo obtener numerosos datos de la Matriz de Distancias y Tiempos de Google Maps, pero -como ya sabréis- existe la limitación de 2.500 consultas al día. He intentado de distintas maneras llevar a cabo más consultas (por encima de ese límite) y no me lo permite, vaya.

Se os ocurre alguna manera para resolver esa restricción ? O incluso contratando los servicios ampliados de la API, cómo utilizarlo desde una macro en VBA de excel ?

Muchas GRACIAS anticipadas por vuestra atención y ayuda.

Share this post


Link to post
Share on other sites

la consulta la realizo a través de ... http://maps.googleapis.com/maps/api/distancematrix/json?origins= ...

Concretamente, de la forma siguiente, en macro de Excel (VBA):

>>>

            firstVal = "http://maps.googleapis.com/maps/api/distancematrix/json?origins="
            secondVal = "&destinations="
            lastVal = "&mode=car&language=en&sensor=false"
            
            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 ("")
            DistanciaAB = -1
            TiempoAB = -1
            
            If InStr(objHTTP.responseText, """distance"" : {") <> 0 Then
                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))
                DistanciaAB = tmpVal
            End If
          
            If InStr(objHTTP.responseText, """duration"" : {") <> 0 Then
                Set regex = CreateObject("VBScript.RegExp"): regex.Pattern = "duration(?:.|\n)*?""value"".*?([0-9]+)": regex.Global = False
                Set matches = regex.Execute(objHTTP.responseText)
                tmpVal = Replace(matches(0).SubMatches(0), ".", Application.International(xlListSeparator))
                TiempoAB = tmpVal
             End If

<<<

... y obtengo DistanciaAB y TiempoAB, pero con un número limitado de consultas al día :-(

Se te ocurre alguna alternativa o solución para no tener esa limitación de respuestas ?

MUCHAS GRACIAS

Share this post


Link to post
Share on other sites

Hola tengo entendido que si compras su paquete no tendrías problemas ( $0.50 USD / 1000 additional requests, up to 100,000  daily.), si o si tendrías que crear un proyecto y usar una clave(key) yo he creado una y funciona ahora no se bien como seria el tramite para poder comprar/pagar.

acá tienes la documentación

https://developers.google.com/maps/documentation/directions/usage-limits?hl=es

En cuanto a utilizar  json preferira xml ya que en vba podes usar la herramienta MSXML2.DOMDocument te dejo un ejemplo y como agregas el Api Key (yo la comente porque esa clave es mia)

 

 

gmaps distancia.xlsm

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.



×
×
  • Create New...

Important Information

Privacy Policy