Convertir automatiquement des fichiers XLSX en Google Sheets avec Google Apps Script ?

Dans un monde où les outils collaboratifs en ligne deviennent de plus en plus indispensables, Google Drive et Google Sheets se distinguent par leur simplicité et leur efficacité.

Cependant, il peut arriver que vous receviez des fichiers au format Microsoft Excel (XLSX) que vous souhaitez convertir en Google Sheets pour une meilleure intégration avec les outils Google.

Cet article vous explique comment automatiser cette tâche en utilisant Google Apps Script, une plateforme de script basée sur JavaScript, intégrée à Google Workspace.

Pourquoi automatiser la conversion des fichiers XLSX en Google Sheets ?

  1. Gain de temps : Convertir manuellement plusieurs fichiers XLSX en Google Sheets peut être fastidieux et chronophage. Une solution automatisée permet de libérer du temps pour d’autres tâches plus importantes.
  2. Cohérence : Assurer une conversion uniforme de tous les fichiers, évitant les erreurs humaines lors de la conversion manuelle.
  3. Intégration : Les fichiers Google Sheets s’intègrent parfaitement avec d’autres outils de Google Workspace, facilitant la collaboration et le partage.

Présentation du script de conversion

Le script que nous allons utiliser permet de convertir automatiquement tous les fichiers XLSX présents dans un dossier spécifique de Google Drive en fichiers Google Sheets. Voici les principales étapes que nous allons suivre :

  1. Activer l’API Google Drive : Permet au script d’interagir avec Google Drive.
  2. Créer et exécuter le script : Utiliser Google Apps Script pour écrire et exécuter le script de conversion.

Étape 1 : Activer l’API Google Drive

Avant de commencer à écrire le script, vous devez activer l’API Google Drive pour votre projet Apps Script.

  • Ouvrez Google Drive et créez un nouveau projet Google Apps Script.
  • Cliquez sur les trois barres horizontales en haut à gauche, puis sur Projet > Services.
  • Ajoutez Drive API.

Étape 2 : Créer et exécuter le script de conversion

Voici le script que vous allez utiliser. Ce script parcourt tous les fichiers XLSX d’un dossier spécifique et les convertit en Google Sheets

const convertirXLSXenGoogleSheets = () => {
  const idDossier = 'VOTRE_DOSSIER_ID'; // Remplacez par l'ID de votre dossier

  try {
    console.log('Tentative de récupération du dossier avec ID : ' + idDossier);
    const dossier = DriveApp.getFolderById(idDossier);
    console.log('Dossier récupéré avec succès.');

    const fichiers = dossier.getFiles();
    console.log('Fichiers récupérés du dossier.');

    while (fichiers.hasNext()) {
      const fichier = fichiers.next();
      console.log('Traitement du fichier : ' + fichier.getName());

      if (fichier.getMimeType() === MimeType.MICROSOFT_EXCEL_LEGACY || fichier.getMimeType() === MimeType.MICROSOFT_EXCEL) {
        console.log('Fichier de type Excel trouvé : ' + fichier.getName());

        const blob = fichier.getBlob();
        const tokenAcces = ScriptApp.getOAuthToken();

        // Création de la partie métadonnées
        const metadonnees = {
          name: fichier.getName().replace('.xlsx', ''),
          mimeType: MimeType.GOOGLE_SHEETS,
          parents: [idDossier]  // Assurez-vous que l'ID du dossier est correctement passé
        };

        const delimiteurMultiparte = '-------314159265358979323846';
        const delimiteur = `\r\n--${delimiteurMultiparte}\r\n`;
        const delimiteurFinal = `\r\n--${delimiteurMultiparte}--`;

        const donneesBase64 = Utilities.base64Encode(blob.getBytes());
        const corpsRequeteMultiparte =
            `${delimiteur}Content-Type: application/json; charset=UTF-8\r\n\r\n` +
            `${JSON.stringify(metadonnees)}${delimiteur}` +
            `Content-Type: ${blob.getContentType()}\r\n` +
            `Content-Transfer-Encoding: base64\r\n\r\n` +
            `${donneesBase64}${delimiteurFinal}`;

        const optionsRequete = {
          method: 'post',
          contentType: `multipart/related; boundary=${delimiteurMultiparte}`,
          headers: {
            Authorization: `Bearer ${tokenAcces}`
          },
          payload: corpsRequeteMultiparte,
          muteHttpExceptions: true
        };

        const url = 'https://www.googleapis.com/upload/drive/v3/files?uploadType=multipart&supportsAllDrives=true&convert=true';

        const reponse = UrlFetchApp.fetch(url, optionsRequete);
        const resultat = JSON.parse(reponse.getContentText());

        if (reponse.getResponseCode() === 200) {
          console.log('Fichier converti avec succès : ' + resultat.name);
        } else {
          console.log('Erreur de conversion : ' + reponse.getContentText());
        }

        // Optionnel : Supprimer le fichier XLSX original après conversion
        // fichier.setTrashed(true);
      }
    }
  } catch (e) {
    console.log('Erreur: ' + e.toString());
  }
};

Comment exécuter le script ?

  • Remplacez ‘VOTRE_DOSSIER_ID’ par l’ID de votre dossier Google Drive.
  • Enregistrez le script.
  • Cliquez sur l’icône en forme de triangle pour exécuter la fonction convertirXLSXenGoogleSheets.
  • Accordez les autorisations nécessaires lorsque vous y êtes invité.
  • Vérifiez les journaux pour confirmer la conversion et le nom du fichier.

Automatiser la conversion des fichiers XLSX en Google Sheets avec Google Apps Script permet de gagner du temps, de garantir la cohérence et de faciliter l’intégration avec les outils Google Workspace. Grâce à ce script, vous pouvez convertir facilement et efficacement vos fichiers Excel pour une utilisation optimale dans Google Sheets.