Importer des données JSON dans Google Sheets avec Google Apps Script
Si vous travaillez régulièrement avec des fichiers JSON et souhaitez automatiser leur importation dans Google Sheets, cet article est fait pour vous. Nous allons vous montrer comment créer un script Google Apps Script qui vous permettra d’importer facilement des données JSON dans vos feuilles de calcul.
Étape 1 : Création du menu personnalisé
La première étape consiste à ajouter un menu personnalisé dans Google Sheets, qui permettra de lancer l’importation des données JSON. Le code suivant crée un menu “Importation JSON” dans la barre d’outils :
function onOpen() { const ui = SpreadsheetApp.getUi(); ui.createMenu('Importation JSON') .addItem('Importer des données JSON', 'afficherBoiteDeDialogue') .addToUi(); }
Fonctionnement
- onOpen : Cette fonction est déclenchée automatiquement à chaque ouverture du fichier Google Sheets. Elle ajoute le menu personnalisé.
- Menu “Importation JSON” : Ce menu contient une option appelée Importer des données JSON, qui ouvre une boîte de dialogue.
Étape 2 : Création d’une boîte de dialogue
Une fois le menu en place, nous avons besoin d’une interface utilisateur pour demander à l’utilisateur l’URL du fichier JSON à importer.
function afficherBoiteDeDialogue() { const htmlOutput = HtmlService .createHtmlOutputFromFile('BoiteDeDialogue') .setWidth(400) .setHeight(150); SpreadsheetApp.getUi().showModalDialog(htmlOutput, 'Importer des données JSON'); }
- • HtmlService : Utilisé pour créer une boîte de dialogue modale qui s’affiche dans Google Sheets.
- • Le fichier BoiteDeDialogue.html contient le formulaire pour entrer l’URL du JSON.
Exemple de contenu pour BoiteDeDialogue.html
<!DOCTYPE html> <html> <body> <div> <label for="url">Entrez l'URL du JSON :</label><br> <input type="text" id="url" name="url" style="width: 100%;"><br><br> <button onclick="soumettre()">Importer</button> </div> <script> function soumettre() { const url = document.getElementById('url').value; google.script.run.importerDonneesJSON(url); google.script.host.close(); } </script> </body> </html>
Étape 3 : Fonction d’importation des données JSON
La partie principale du script se trouve dans la fonction qui télécharge et traite le fichier JSON. Voici le code :
function IMPORTJSON(url) { try { const reponse = UrlFetchApp.fetch(url); const contenu = reponse.getContentText(); const json = JSON.parse(contenu); const donnes = analyserJSON_(json); return donnes; } catch (erreur) { return [[`Erreur : ${erreur.toString()}`]]; } }
Explications
- UrlFetchApp.fetch(url) : Récupère le contenu de l’URL JSON.
- JSON.parse(contenu) : Convertit le texte JSON en un objet JavaScript.
- Gestion des erreurs : Si une erreur se produit, un message est affiché dans la feuille de calcul.
Étape 4 : Traitement et aplatissement des données JSON
Les données JSON sont souvent imbriquées. La fonction suivante permet de transformer les objets imbriqués en une structure tabulaire :
function analyserJSON_(json) { if (Array.isArray(json)) { return json.map(élément => aplatirObjet_(élément)); } else { return [aplatirObjet_(json)]; } } function aplatirObjet_(objet) { let resultat = []; for (const [clé, valeur] of Object.entries(objet)) { if (valeur && typeof valeur === 'object') { resultat = resultat.concat(aplatirObjet_(valeur)); } else { resultat.push(valeur); } } return resultat; }
Fonctionnement
- analyserJSON_ : Vérifie si les données JSON sont une liste ou un objet unique.
- aplatirObjet_ : Décompose les objets imbriqués en une seule ligne de données.
Étape 5 : Envoi des données dans Google Sheets
Enfin, les données traitées sont insérées dans la feuille active à partir de la cellule A1 :
function importerDonneesJSON(url) { const feuille = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); const donnes = IMPORTJSON(url); feuille.getRange(1, 1, donnes.length, donnes[0].length).setValues(donnes); }
- getActiveSpreadsheet() : Récupère le fichier Google Sheets en cours.
- getActiveSheet() : Récupère la feuille active où les données seront insérées.
- setValues(donnes) : Insère les données dans les cellules.
Résultat final
Une fois ce script déployé, vous pourrez :
- Cliquer sur le menu Importation JSON.
- Entrer l’URL du fichier JSON dans la boîte de dialogue.
- Voir les données apparaître automatiquement dans votre feuille Google Sheets.
Ce script est un excellent moyen d’automatiser l’importation de données JSON dans Google Sheets. Vous pouvez personnaliser et améliorer ce script selon vos besoins, par exemple en ajoutant une gestion des en-têtes ou en formatant les données.
N’hésitez pas à tester ce script et à l’adapter à vos projets. Si vous avez des questions ou des suggestions, partagez-les dans les commentaires ! 🚀