Excel : Obtenir les distances et temps de parcours d’un trajet Google Maps

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.

Google Maps Caen Lisieux

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

GOOGLEAPIS

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 :

GOOGLE MAPS CALCULS

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

Share Button
The following two tabs change content below.
Après seize années passées en cabinet d’expertise-comptable et de commissariat aux comptes (où j’ai exercé comme expert-comptable et chef de mission audit), j’ai pris le poste de directeur comptable d’un groupe de distribution automobile en novembre 2014. Au cours de ma carrière, j’ai acquis une expérience significative en audit et en exploitation des systèmes d’information (analyse de données, automatisation des tâches, programmation informatique) au service de la production des comptes annuels et consolidés. C’est cette expérience personnelle et ma passion pour l’informatique que je partage sur ce blog. Mon CV / Réalisations personnelles et projets informatiques / Ma collection / Me contacter

5 commentaires

  1. 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.

  2. 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.

  3. 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

  4. 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

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.