Importer automatiquement les codes postaux de La Poste dans Google Sheets

Dans cet article, nous allons expliquer comment importer automatiquement les codes postaux français dans une feuille Google Sheets à l’aide de Google Apps Script. Nous utiliserons l’API de La Poste qui fournit les données de manière ouverte.

Étape 1 : Comprendre les données

Les données sont disponibles sous licence ouverte via datanova.laposte.fr. L’API propose un schéma décrivant les différentes colonnes, ce qui nous permet de récupérer les informations comme le code INSEE, le nom de la commune, le code postal, etc.

Étape 2 : Création du script Google Apps Script

Ouvrez une feuille Google Sheets, puis accédez à Extensions > Apps Script et ajoutez le script suivant :

/**
 * Script d'importation des codes postaux dans Google Sheets
 * Source des données : La Poste (https://datanova.laposte.fr/)
 * Licence : Open Licence 2.0
 * 
 * Ce script récupère les codes postaux via l'API de La Poste et les importe dans une feuille Google Sheets.
 */

function importerCodesPostaux() {
  const feuille = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  const urlSchema = 'https://datanova.laposte.fr/data-fair/api/v1/datasets/laposte-hexasmal/schema';
  const urlCSV = 'https://datanova.laposte.fr/data-fair/api/v1/datasets/laposte-hexasmal/raw';

  // Récupérer le schéma de l'API
  const reponseSchema = UrlFetchApp.fetch(urlSchema);
  const donneesSchema = JSON.parse(reponseSchema.getContentText());

  // Extraire les 5 premiers en-têtes correspondant aux colonnes du CSV
  const entetes = donneesSchema.slice(0, 5).map(colonne => colonne.key);

  // Récupérer les données CSV
  const reponseCSV = UrlFetchApp.fetch(urlCSV);
  const donneesCSV = Utilities.parseCsv(reponseCSV.getContentText(), ';');

  // Remplacer la première ligne par les en-têtes récupérés
  donneesCSV[0] = entetes;

  feuille.clear(); // Effacer les données existantes
  feuille.getRange(1, 1, donneesCSV.length, donneesCSV[0].length).setValues(donneesCSV);

  // Mettre les en-têtes en gras
  feuille.getRange(1, 1, 1, donneesCSV[0].length).setFontWeight('bold');

  // Figer la première ligne
  feuille.setFrozenRows(1);
}

Explication du code

  • Récupération du schéma : Nous interrogeons l’API pour obtenir les noms des colonnes de données.
  • Récupération des données CSV : Nous téléchargeons les codes postaux actuels depuis l’URL CSV de La Poste.
  • Mise en forme : Le script importe les données, remplace les en-têtes par les noms corrects, met l’en-tête en gras, et fige la première ligne.

Conclusion

Grâce à ce script, vous avez maintenant un moyen automatisé de récupérer et mettre à jour la base des codes postaux dans Google Sheets. C’est un exemple parfait de la manière dont les données ouvertes et Google Apps Script peuvent simplifier des tâches quotidiennes.