Automatiser le calcul des distances dans Google Sheets avec Apps Script
Dans le monde dynamique d’aujourd’hui, l’efficacité et l’automatisation sont clés pour économiser du temps et augmenter la productivité. Que vous soyez un gestionnaire de flotte, un organisateur d’événements, ou simplement quelqu’un qui planifie un voyage, calculer des distances entre des points peut s’avérer essentiel. Google Sheets, combiné à Google Apps Script et à l’API Google Maps, offre une solution puissante pour automatiser ce processus.
Dans cet article, nous explorerons comment créer un script pour calculer automatiquement les distances en voiture entre des adresses saisies dans une feuille de calcul Google Sheets.
Pourquoi automatiser le calcul des distances ?
L’automatisation du calcul des distances peut vous faire économiser un temps considérable, surtout si vous travaillez régulièrement avec des listes d’adresses. Plutôt que de saisir manuellement chaque adresse dans Google Maps, notre solution propose un calcul instantané directement dans votre feuille de calcul. Cela peut être particulièrement utile pour :
- Les entreprises de livraison estimant les coûts de transport
- Les planificateurs d’événements calculant les distances pour les participants
- Les voyageurs organisant leurs itinéraires
Comment configurer le script dans Google Sheets ?
Étape 1 : Préparer votre feuille de calcul Google Sheets
Commencez par créer une nouvelle feuille de calcul Google Sheets. Dans la première ligne, nommez trois colonnes : « Adresse de départ », « Adresse d’arrivée », « Distance en km » et « Durée ».
Étape 2 : Ajouter le code Google Apps Script
- Ouvrez l’éditeur de script depuis votre feuille de calcul en cliquant sur Extensions > Apps Script.
- Copiez et collez le script (fourni plus bas) dans l’éditeur de script.
function onEdit(e) {
const { range } = e;
const sheet = range.getSheet();
// Vérifier si la modification a eu lieu dans la colonne A ou B et si les deux colonnes ont des valeurs
if ((range.getColumn() === 1 || range.getColumn() === 2) &&
sheet.getRange(range.getRow(), 1).getValue() &&
sheet.getRange(range.getRow(), 2).getValue()) {
calculerDistanceEtTempsPourLigne(range.getRow());
}
}
const calculerDistanceEtTempsPourLigne = (ligne) => {
const feuille = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
const adresseDepart = feuille.getRange(ligne, 1).getValue();
const adresseArrivee = feuille.getRange(ligne, 2).getValue();
const directionsService = Maps.newDirectionFinder().setMode(Maps.DirectionFinder.Mode.DRIVING);
const directions = directionsService.setOrigin(adresseDepart).setDestination(adresseArrivee).getDirections();
if (directions && directions.routes.length > 0) {
const leg = directions.routes[0].legs[0];
// Calcul de la distance
const distance = leg.distance.text.split(' ')[0].replace('.', ',');
feuille.getRange(ligne, 3).setValue(distance);
// Calcul du temps de trajet
const duree = leg.duration.text;
feuille.getRange(ligne, 4).setValue(duree);
} else {
feuille.getRange(ligne, 3).setValue("Distance non trouvée");
feuille.getRange(ligne, 4).setValue("Temps non trouvé");
}
};
Étape 3 : Le script
Le script utilise Google Maps Directions API pour calculer la distance de conduite entre les adresses de départ et d’arrivée. Il inclut une fonction `onEdit` qui déclenche le calcul automatiquement dès qu’une adresse est saisie ou modifiée.
Conclusion
L’automatisation du calcul des distances dans Google Sheets via Google Apps Script est un excellent exemple de la manière dont vous pouvez utiliser les outils Google pour améliorer votre efficacité. En suivant les étapes décrites dans cet article, vous serez capable de mettre en place un système qui non seulement économise du temps mais aussi augmente la précision de vos calculs de distances.
Bonjour,
Merci beaucoup :))
Avez vous, la suite du script pour obtenir le temps de trajet en minute ?
Cordialement
Christophe
Pour ajouter le calcul du temps de trajet en minutes à votre script, vous pouvez extraire la durée du trajet à partir des données de l’API Google Maps de la même manière que vous avez extrait la distance. Le temps de trajet est disponible dans l’objet directions sous la propriété legs[0].duration.text.
Je modifie le code dans l’article