Si se tienen en cuenta dos direcciones registradas en Zoho Creator (un punto de recogida y otro de entrega, un técnico y un lugar de trabajo, o un almacén y un cliente), la API Google Distance Matrix devuelve la distancia en coche entre ellas. Esta función la invoca desde Deluge y guarda el resultado en el registro en kilómetros o millas, listo para la facturación por kilometraje, el cálculo de costes de ruta o las reglas de zonas de entrega.
Reescrito a partir del original de 2016. La versión de la biblioteca original usaba getUrl() y analizaba la respuesta convirtiéndola a XML y ejecutando una expresión XPath. getUrl() es una función obsoleta, y el método XPath devuelve silenciosamente una cadena vacía cuando Google informa de ZERO_RESULTS o NOT_FOUND . El script que se muestra a continuación usa invokeurl , lee el JSON directamente y comprueba el estado de cada elemento antes de escribir nada. Además, elimina el parámetro sensor=false , que Google eliminó hace años.
Distance_Calc aquí) con campos de dirección para ambos extremos: Street / City / State / PostalCode y la Street1 / City1 / State1 / PostalCode1 correspondiente.textDistance (una sola línea) y Distance (decimal).void API.CalcDistance(int id)
{
d = Distance_Calc[ID == input.id];
// Construir las cadenas de consulta de origen y destino
strAddress1 = "orígenes=" + d.Calle + "," + d.Ciudad + "," + d.Estado + "," + d.CódigoPostal;
strAddress2 = "&destinos=" + d.Street1 + "," + d.City1 + "," + d.State1 + "," + d.PostalCode1;
apiKey = "TU_CLAVE_API_DE_GOOGLE_MAPS";
strFullData = "https://maps.googleapis.com/maps/api/distancematrix/json?" + strAddress1 + strAddress2 + "&key=" + apiKey;
respuesta = invokeurl
[
URL: strFullData
tipo: GET
];
// Lee el primer elemento de la primera fila
filas = respuesta.getJSON("filas");
si(filas != null && filas.size() > 0)
{
elementos = filas.get(0).getJSON("elementos");
si(elementos != null && elementos.size() > 0)
{
elemento = elementos.get(0);
if(element.getJSON("status") == "OK")
{
distText = element.getJSON("distancia").getJSON("texto"); // p. ej. "12,4 km"
distVal = element.getJSON("distancia").getJSON("valor"); // metros, entero
d.distanciaTexto = distTexto;
d.Distancia = distVal.toDecimal() / 1000; // km. Use / 1609.34 para millas.
}
demás
{
info "Estado del elemento de la matriz de distancias: " + element.getJSON("status");
}
}
}
demás
{
info "Error de matriz de distancias: " + response.toString();
}
}
OK mientras que un elemento individual es ZERO_RESULTS . Verifique el estado del elemento, como se indicó anteriormente, o almacenará ceros para pares no enrutables.distance.value siempre son metros, independientemente de la configuración regional; distance.text es una cadena formateada que cambia con el parámetro units . Convierte desde el valor numérico.origins=lat,lng y destinations=lat,lng si ya utiliza geocodificación.Este script forma parte de la biblioteca gratuita Creator Scripts Deluge.
Los 39 scripts de Deluge, el curso completo de Zoho Creator y todos los recursos descargables ahora son gratuitos. Obtén acceso gratuito →