Saltar al contenido

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


cbreason

Recommended Posts

publicado

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.

publicado

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

publicado

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

  • 2 months later...

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.