Le calcul d’itinéraires, de temps de parcours ou de distances entre deux adresses, quel que soit le mode de transport retenu (voiture, à pied, vélo, train…), est utile pour planifier un déplacement chez un client, valider une note de frais… Ces calculs peuvent être réalisés à l’aide de sites internet comme Mappy ou Google Maps. Ce dernier dispose d’une API qui permet de collecter le résultat des calculs (distances et temps de parcours) directement dans un tableau Excel.
Une API assure l’interface entre deux systèmes. Par exemple, les logiciels de paye télétransmettent les Déclarations Sociales Nominatives (DSN) vers les serveurs de l’État par l’intermédiaire d’une API. Le fonctionnement d’une API est simple. Un logiciel envoie une requête à un site internet ou à un autre logiciel par le biais de son API. Le site internet exécute la requête, interroge ses bases de données et renvoie le résultat au logiciel, qui intègre les données reçues dans son processus de calcul. Les API assurent ainsi l’interaction entre des logiciels d’éditeurs différents.
L’accès à l’API Google Maps est payant. Documentation en ligne : https://developers.google.com/maps/documentation/javascript/distancematrix?hl=f
C’est la fonction Excel SERVICEWEB(url) qui interroge un site internet (API) et collecte le résultat de la requête sous la forme d’une chaîne de caractères. Le paramètre URL correspond à la requête HTTP. Dans le cas de l’API Google Maps, la requête est constituée :
- de l’adresse internet de l’API : https://maps.googleapis.com/maps/api/distancematrix/
- des paramètres origins= et destinations= suivis respectivement de l’adresse de départ et d’arrivée de l’itinéraire
- du paramètre mode= suivi du mode de locomotion voulu : driving (voiture), walking (piéton), bicycling (vélo)
- du paramètre key= suivi de la clef API communiquée par Google (payant) ; en l’absence de clef, l’API retournera un message d’erreur (You must use an API key to authenticate each request to Google Maps Platform APIs)
Exemples de calculs de trajets :
Exemple de requête :
=SERVICEWEB(“https://maps.googleapis.com/maps/api/distancematrix/xml?origins=”&A4&” “&B4&”&destinations=”&A5&” “&B5&”&mode=driving&key=xxxxxxxx”)
L’adresse de départ est constituée de la concaténation (opérateur de concaténation = &, à prononcer esperluette) de la rue (ici en cellule A4) et de la ville (ici B4). L’adresse de destination est obtenue de la même manière. Le mode de transport est ici un véhicule automobile (driving).
Résultat de la requête pour un trajet départ 8 rue Léopold Sédar Senghor, 14460 COLOMBELLES et arrivée 13 rue du Centre, 14730 GIBERVILLE :
"<?xml version=""1.0"" encoding=""UTF-8""?> <DistanceMatrixResponse> <status>OK</status> <origin_address>8 Rue Léopold Sédar-Senghor, 14460 Colombelles, France</origin_address> <destination_address>13 Rue du Ctre, 14730 Giberville, France</destination_address> <row> <element> <status>OK</status> <duration> <value>296</value> <text>5 mins</text> </duration> <distance> <value>2650</value> <text>2.6 km</text> </distance> </element> </row> </DistanceMatrixResponse> "
Le résultat de la requête est retranscrit au format XML. Il comprend les adresses de départ et de destination telles qu’interprétées par Google Maps, le statut de la requête (OK ou erreur) et le temps et la distance de parcours calculés par Google Maps.
Les champs de données sont identifiés par des balises disposées en amont (<nom_du_champ>) et en aval (</nom_du_champ>).
Pour isoler les données souhaitées, il est possible de les filtrer avec la fonction Excel FILTRE.XML(ChaîneXML,XPath). La fonction FILTRE.XML fait partie des nouvelles fonctions d’Excel (au même titre que RECHERCHEX, FILTRE, TRIER…). La paramètre XPath correspond au chemin d’accès à la donnée XML (arborescence de balises).
Par exemple, le chemin d’accès XPath au temps de parcours (duration en anglais) :
- /DistanceMatrixResponse/row/element/duration/text correspond à la valeur 5 mins (cf résultat XML ci-avant)
- /DistanceMatrixResponse/row/element/duration/value correspond à la valeur 296, soit le temps de trajet en secondes (soit près de cinq minutes…)
De même pour la distance à parcourir :
- /DistanceMatrixResponse/row/element/distance/text correspond à la valeur 2.6 km
- /DistanceMatrixResponse/row/element/distance/value correspond à la valeur 2650, soit 2 650 mètres.
Autres chemins XPath intéressants :
- /DistanceMatrixResponse/ : renvoie le statut de la requête ; OK si le trajet a pu être calculé (adresses de départ et d’arrivée identifiées)
- /DistanceMatrixResponse/Origin_address et /DistanceMatrixResponse/Destination_address : correspondent respectivement aux adresses de départ et d’arrivées telles que reconnues par Google Maps.
Ainsi pour obtenir dans Excel la distance du trajet (en km) avec la fonction FILTRE.XML, il faut rédiger la formule de calcul :
=FILTRE.XML(C5;”/DistanceMatrixResponse/row/element/distance/value”)/1000
De même, pour le temps de parcours en minutes :
=FILTRE.XML(C5;”/DistanceMatrixResponse/row/element/duration/value”)/60
Le calcul d’itinéraires peut également être lancé à partir d’Excel avec de simples liens hypertextes, comme évoqué dans cet article.
___
Approfondir le sujet : API
Derniers articles parBenoît RIVIERE (voir tous)
- VBA/SQL vs Power Query : deux solutions complémentaires - mercredi 2 octobre 2024
- L’IA dans les cabinets comptables : cas concrets - jeudi 26 septembre 2024
- EXCEL : insérer une image ou un logo dans une cellule - lundi 16 septembre 2024
- Lancer l’exécution d’un script Python à partir d’une macro VBA - lundi 9 septembre 2024
- Open Data : quoi de neuf ? - lundi 2 septembre 2024
Monsieur bonjour,
Je vous remercie pour votre article pertinent.
Selon vous, est-il possible de choisir la distance la plus courte entre l’adresse de départ et l’adresse d’arrivée ?
Je vous remercie encore.
Bonne soirée.
Bonjour Monsieur,
Par défaut, le trajet renvoyé par la requête est le plus court (calculé en fonction du moyen de locomotion). Normalement, cet article répond à votre besoin.
Pour obtenir le trajet le plus rapide, il faudrait ajouter le paramètre “traffic_model” avec la valeur “best_guess” (disponible uniquement avec le paramètre “mode” avec la valeur “driving” (conduite automobile)).
Pour plus d’informations, cf le site de l’éditeur du service : https://console.cloud.google.com/apis/library/distance-matrix-backend.googleapis.com
Bonne fin de week-end.
Bonjour en essayant d’effectuer la formule, je reçois un message d’erreur disant que je dois avoir un compte API pour effectuer le calcul de distance avec cette formule. Existe-t-il une autre solution pour calculer la distance en recevant les KM et durée du trajet sans avoir un compte ?
Merci
Manon
Bonjour,
Malheureusement, je n’ai trouvé aucune autre solution pour réaliser ces calculs..
Cordialement,
B. RIVIERE
Pingback: Python : automatiser le téléchargement en masse des documents juridiques et financiers des entreprises au format PDF à l'aide de l'API de l'INPI - Audit & Systèmes d'Information