Le format CSV est un outil puissant pour échanger des données entre différents systèmes. Cependant, en France, il faut souvent utiliser un point-virgule pour séparer les colonnes, au lieu de la virgule standard. Cela permet de respecter les règles locales, car la virgule est couramment utilisée comme séparateur décimal. Si vous travaillez avec Google Sheets et que vous devez exporter vos données dans un format compatible, cet article vous aidera à simplifier le processus.
Pourquoi utiliser un point-virgule comme séparateur ?
Dans les systèmes français, la virgule sert à séparer les décimales. Utiliser ce même symbole pour séparer les colonnes dans un fichier CSV peut créer de la confusion lors de l’importation des données. Il est donc préférable d’opter pour le point-virgule, un séparateur plus adapté à ces besoins spécifiques.
Gagnez du temps avec l’automatisation
L’exportation manuelle d’un fichier Google Sheets et la modification du séparateur peuvent devenir fastidieuses. En automatisant ce processus, vous évitez des erreurs potentielles et gagnez du temps. Le processus d’exportation automatique inclut les étapes suivantes :
- Exporter les données de votre feuille active.
- Utiliser le point-virgule pour séparer les colonnes.
- Enregistrer le fichier dans votre Google Drive.
- Générer un lien de téléchargement pour un accès rapide.
Avantages de cette solution
- Simplification : Vous ne modifiez plus manuellement les fichiers. Tout se fait en un seul clic.
- Compatibilité : Le fichier CSV est immédiatement compatible avec les systèmes français.
- Efficacité : Vous accédez directement au fichier dans Google Drive, sans besoin de le chercher.
Le code
/**
* @OnlyCurrentDoc
*/
/**
* Nom du projet: Exporteur CSV Amélioré
* Description: Script pour exporter la feuille active d'un Google Sheet en fichier CSV
* avec un séparateur point-virgule et afficher un lien de téléchargement.
* Auteur: Fabrice Faucheux
* Site Web: https://atelier-informatique.com
* Date de mise à jour: 2025-05-24
*/
/**
* S'exécute à l'ouverture du fichier Google Sheets.
* Ajoute un menu personnalisé pour exporter la feuille active en CSV.
*/
function onOpen() {
const ui = SpreadsheetApp.getUi();
ui.createMenu('Exporter en CSV')
.addItem('Sauvegarder la feuille active en CSV', 'sauvegarderFeuilleActiveEnCSV')
.addToUi();
}
/**
* Sauvegarde la feuille active du classeur courant en tant que fichier CSV
* dans le dossier racine de Google Drive de l'utilisateur.
* Le fichier CSV utilisera le point-virgule comme séparateur.
*/
function sauvegarderFeuilleActiveEnCSV() {
try {
const classeur = SpreadsheetApp.getActiveSpreadsheet();
const feuilleActive = classeur.getActiveSheet();
const nomFeuille = feuilleActive.getName();
const idClasseur = classeur.getId();
const idFeuille = feuilleActive.getSheetId();
// Obtenir le fuseau horaire du script pour formater la date correctement
const fuseauHoraire = Session.getScriptTimeZone();
const dateCourante = Utilities.formatDate(new Date(), fuseauHoraire, 'yyyy-MM-dd');
const nomDuFichier = `${nomFeuille} - ${dateCourante}.csv`;
// Construire l'URL d'exportation pour la feuille spécifique
// format=csv indique le format CSV, gid=idFeuille spécifie la feuille à exporter
const urlExport = `https://docs.google.com/spreadsheets/d/${idClasseur}/export?format=csv&gid=${idFeuille}`;
const tokenOAuth = ScriptApp.getOAuthToken();
const optionsRequete = {
headers: {
'Authorization': `Bearer ${tokenOAuth}`
},
muteHttpExceptions: true // Pour attraper les erreurs HTTP manuellement si besoin
};
const reponseHttp = UrlFetchApp.fetch(urlExport, optionsRequete);
if (reponseHttp.getResponseCode() !== 200) {
SpreadsheetApp.getUi().alert(`Erreur lors de l'exportation`, `Le serveur a répondu avec le code : ${reponseHttp.getResponseCode()}. Contenu : ${reponseHttp.getContentText()}`, SpreadsheetApp.getUi().ButtonSet.OK);
return;
}
const blobCsv = reponseHttp.getBlob();
// Convertir le contenu CSV (qui est par défaut séparé par des virgules)
// en un contenu séparé par des points-virgules.
const contenuCsvOriginal = blobCsv.getDataAsString();
const donneesTableau = Utilities.parseCsv(contenuCsvOriginal); // Parse le CSV en tableau 2D
// Si le CSV est vide ou ne contient qu'une ligne vide après parsing
if (!donneesTableau || donneesTableau.length === 0 || (donneesTableau.length === 1 && donneesTableau[0].length === 1 && donneesTableau[0][0] === "")) {
SpreadsheetApp.getUi().alert('Feuille vide', 'La feuille active semble être vide ou ne contient pas de données exportables.', SpreadsheetApp.getUi().ButtonSet.OK);
return;
}
const contenuCsvPointVirgule = donneesTableau.map(ligne => ligne.join(';')).join('\n');
// Sauvegarder le fichier CSV dans le dossier racine de Drive
// Vous pourriez vouloir choisir un dossier spécifique ou créer un sous-dossier.
const dossierParent = DriveApp.getRootFolder();
const fichierCsv = dossierParent.createFile(nomDuFichier, contenuCsvPointVirgule, MimeType.CSV);
afficherLienTelechargement(fichierCsv.getName(), fichierCsv.getDownloadUrl());
} catch (erreur) {
Logger.log(`Erreur dans sauvegarderFeuilleActiveEnCSV: ${erreur.toString()} \nStack: ${erreur.stack}`);
SpreadsheetApp.getUi().alert('Une erreur est survenue', `Détails de l'erreur : ${erreur.message}`, SpreadsheetApp.getUi().ButtonSet.OK);
}
}
/**
* Affiche une boîte de dialogue modale avec un lien pour télécharger le fichier CSV généré.
* @param {string} nomFichier Le nom du fichier à afficher.
* @param {string} urlTelechargement L'URL de téléchargement direct du fichier.
*/
function afficherLienTelechargement(nomFichier, urlTelechargement) {
// L'URL de téléchargement de DriveApp.getFileById().getDownloadUrl() inclut "&gd=true"
// qui peut parfois interférer avec le téléchargement direct ou forcer une prévisualisation.
// Le supprimer est une pratique courante pour obtenir un lien de téléchargement plus direct.
const urlTelechargementDirect = urlTelechargement.replace('&gd=true', '');
const contenuHtml = `
<p>Votre fichier CSV "${nomFichier}" est prêt !</p>
<p><a href="${urlTelechargementDirect}" target="_blank" rel="noopener noreferrer">Cliquez ici pour le télécharger</a></p>
<br>
<input type="button" value="Fermer" onclick="google.script.host.close()" />
`;
const interfaceHtml = HtmlService.createHtmlOutput(contenuHtml)
.setWidth(400)
.setHeight(150);
SpreadsheetApp.getUi().showModalDialog(interfaceHtml, 'Fichier CSV Généré');
}
Un accès simplifié à vos fichiers CSV
Une fois l’exportation effectuée, le fichier se trouve dans votre Google Drive. Vous recevrez également un lien de téléchargement pour un accès rapide, sans avoir à quitter votre feuille Google Sheets. Cela facilite grandement le partage des données.
Automatiser l’exportation de vos données au format CSV avec un point-virgule comme séparateur vous permet de travailler plus efficacement. Vous évitez les erreurs de formatage et gagnez du temps à chaque exportation. Cette solution convient parfaitement aux utilisateurs qui doivent fréquemment partager leurs données avec des systèmes français.