Exporter et importer des données entre Google Sheets avec Google Apps Script
Lorsqu’il s’agit de transférer des données entre fichiers Google Sheets, IMPORTRANGE est souvent la méthode privilégiée. Cependant, cette solution peut s’avérer peu fiable lorsque les fichiers deviennent volumineux, entraînant des erreurs comme « Le fichier est trop volumineux ». Dans ce contexte, utiliser Google Apps Script avec des fichiers CSV pour exporter et importer des données constitue une alternative flexible et performante.
Exportation de données au format CSV
Le script suivant permet d’exporter les données d’une feuille Google Sheets vers un fichier CSV stocké dans Google Drive.
function exporterEnCSV() { const nomFeuille = "NOM_DE_LA_FEUILLE"; const nomFichier = "NOM_DU_FICHIER"; const classeur = SpreadsheetApp.getActive(); const feuilleSource = classeur.getSheetByName(nomFeuille); // Récupérer les données telles qu'affichées dans la feuille const valeursDonnees = feuilleSource.getDataRange().getDisplayValues(); // Convertir les données en contenu CSV const contenuCSV = valeursDonnees.map(ligne => ligne.join(";")).join("\n"); if (contenuCSV === "") return; try { const idFichier = DriveApp.getFilesByName(nomFichier + ".csv").next().getId(); DriveApp.getFileById(idFichier).setContent(contenuCSV); } catch { DriveApp.createFile(nomFichier + ".csv", contenuCSV, MimeType.CSV); } }
Fonctionnement :
- Les données de la feuille spécifiée sont récupérées.
- Les données sont converties en texte CSV avec le point-virgule (;) comme séparateur.
- Si un fichier CSV existe déjà, il est mis à jour. Sinon, un nouveau fichier est créé.
Importation de données à partir d’un fichier CSV
Ce script importe les données d’un fichier CSV dans une feuille Google Sheets.
function importerDepuisCSV() { const nomFeuille = "NOM_DE_LA_FEUILLE"; const nomFichier = "NOM_DU_FICHIER"; const separateur = ";"; const feuilleDestination = SpreadsheetApp.getActive().getSheetByName(nomFeuille); let idFichier; try { idFichier = DriveApp.getFilesByName(nomFichier + ".csv").next().getId(); } catch { Logger.log("Le fichier '" + nomFichier + ".csv' n'a pas été trouvé."); return; } const fichier = DriveApp.getFileById(idFichier); const contenuCSV = fichier.getBlob().getDataAsString(); const donnees = contenuCSV.split("\n").map(ligne => ligne.split(separateur)); feuilleDestination.clearContents(); feuilleDestination.getRange(1, 1, donnees.length, donnees[0].length).setValues(donnees); }
Fonctionnement :
- Le fichier CSV est localisé dans Google Drive.
- Les données sont extraites et divisées en lignes et colonnes.
- Les données existantes dans la feuille sont effacées avant d’ajouter les nouvelles.
Automatisation via des déclencheurs
Pour automatiser le processus d’importation, vous pouvez utiliser un déclencheur basé sur le temps. Voici les étapes pour le configurer :
- Ouvrez l’éditeur Apps Script (Extensions > Apps Script).
- Cliquez sur l’icône d’horloge pour accéder aux déclencheurs.
- Créez un nouveau déclencheur pour la fonction importerDepuisCSV avec une fréquence définie (par exemple, toutes les heures).
Pourquoi utiliser cette méthode ?
Avantages :
- Pas de limites d’IMPORTRANGE : Les erreurs dues à des fichiers volumineux sont évitées.
- Efficacité : La méthode CSV réduit les problèmes de connectivité.
- Automatisation : L’importation peut être configurée pour s’exécuter automatiquement.
Limites :
- Maintenance : Les scripts doivent être ajustés si les paramètres changent.
- Sécurité : Assurez-vous de sécuriser les fichiers et les scripts.
Avec ces scripts et une configuration de déclencheurs, vous pouvez gérer de manière fiable et efficace des volumes importants de données entre Google Sheets. Adaptez les paramètres, comme le séparateur, pour répondre à vos besoins spécifiques.