Guide de démarrage rapide de la bibliothèque

Créez une bibliothèque Apps Script pour supprimer les lignes en double dans les données d'une feuille de calcul.

Objectifs

  • Configurez le script.
  • Exécutez le script.

Conditions préalables

Pour utiliser cet exemple, vous devez remplir les conditions préalables suivantes:

  • Un compte Google (les comptes Google Workspace peuvent nécessiter l'approbation de l'administrateur)
  • Un navigateur Web avec accès à Internet.

Configurer le script

Pour créer la bibliothèque, procédez comme suit:

  1. Connectez-vous à votre compte Google.
  2. Pour ouvrir l'éditeur de scripts, accédez à script.google.com.
  3. En haut à gauche, cliquez sur Nouveau projet.
  4. Supprimez tout code éventuellement présent dans l'éditeur de scripts, puis collez dans ce dernier le code ci-dessous.

    sheets/removingDuplicates/removingDuplicates.gs
    /**
     * Removes duplicate rows from the current sheet.
     */
    function removeDuplicates() {
      const sheet = SpreadsheetApp.getActiveSheet();
      const data = sheet.getDataRange().getValues();
      const uniqueData = {};
      for (let row of data) {
        const key = row.join();
        uniqueData[key] = uniqueData[key] || row;
      }
      sheet.clearContents();
      const newData = Object.values(uniqueData);
      sheet.getRange(1, 1, newData.length, newData[0].length).setValues(newData);
    }
  5. Cliquez sur Enregistrer Icône Enregistrer.

  6. En haut à gauche, cliquez sur Projet sans titre.

  7. Nommez votre script Remove duplicate rows (Supprimer les lignes en double) et cliquez sur Rename (Renommer).

  8. Cliquez sur Déployer > Nouveau déploiement.

  9. En regard de Sélectionner un type, cliquez sur "Activer les types de déploiement" Icône d'activation des types de déploiement > Bibliothèque.

  10. Saisissez une description de la bibliothèque, par exemple Remove duplicate rows (Supprimer les lignes en double). Tous les utilisateurs ayant accès à la bibliothèque peuvent voir cette description.

  11. Cliquez sur Déployer.

  12. Sur la gauche, cliquez sur Paramètres du projet Icône des paramètres du projet.

  13. Sous ID, copiez l'ID de script. Vous en aurez besoin lors d'une prochaine étape.

Exécuter le script

Pour utiliser une bibliothèque, vous devez disposer au minimum d'autorisations d'affichage pour son projet Apps Script. Comme vous avez créé la bibliothèque, vous disposez des autorisations nécessaires pour l'utiliser. Si vous souhaitez autoriser d'autres personnes à utiliser la bibliothèque, accordez-leur l'autorisation d'afficher le projet Apps Script.

Pour utiliser la bibliothèque, procédez comme suit:

  1. Ouvrez une feuille de calcul Google Sheets contenant des données avec des lignes en double. Pour utiliser un exemple de feuille de calcul, créez une copie de la feuille de calcul Sample duplicate rows (Exemple de lignes en double).
  2. Cliquez sur Extensions > Apps Script.
  3. À côté de Bibliothèques, cliquez sur Ajouter une bibliothèque .
  4. Dans la section ID de script, collez l'ID de script du projet Apps Script de la bibliothèque que vous avez copié à la section précédente.
  5. Cliquez sur Rechercher.
  6. Dans la section Version, sélectionnez 1.
  7. Cliquez sur Add (Ajouter).
  8. Supprimez tout code éventuellement présent dans l'éditeur de scripts, puis collez dans ce dernier le code ci-dessous.

    function runLibrary() {
     Removeduplicaterows.removeDuplicates();
    }
    
  9. Dans le menu déroulant de la fonction, sélectionnez runLibrary.

  10. Cliquez sur Exécuter.

  11. Revenez à la feuille de calcul pour afficher les données mises à jour sans les lignes en double.

Examiner le code

Pour examiner le code Apps Script de cette solution, cliquez sur Afficher le code source ci-dessous:

Afficher le code source

Tout d'abord, le script effectue un seul appel à la feuille de calcul pour récupérer toutes les données. Vous pouvez choisir de lire la feuille ligne par ligne, mais les opérations JavaScript sont beaucoup plus rapides que de communiquer avec d'autres services tels que Feuille de calcul. Moins vous passez d'appels, plus il va vite. C'est important, car la durée maximale d'exécution de chaque script est de 6 minutes.

sheets/removingDuplicates/removingDuplicates.gs
const sheet = SpreadsheetApp.getActiveSheet();
const data = sheet.getDataRange().getValues();

La variable data est un tableau JavaScript bidimensionnel qui contient toutes les valeurs de la feuille. newData est un tableau vide dans lequel le script place toutes les lignes non dupliquées.

sheets/removingDuplicates/removingDuplicates.gs
const newData = Object.values(uniqueData);

La première boucle for parcourt chaque ligne du tableau bidimensionnel data. Pour chaque ligne, la deuxième boucle vérifie si une autre ligne avec les données correspondantes existe déjà dans le tableau newData. S'il ne s'agit pas d'un doublon, la ligne est transmise au tableau newData.

sheets/removingDuplicates/removingDuplicates.gs
uniqueData[key] = uniqueData[key] || row;

Enfin, le script supprime le contenu existant de la feuille et insère le contenu du tableau newData.

sheets/removingDuplicates/removingDuplicates.gs
sheet.clearContents();
const newData = Object.values(uniqueData);
sheet.getRange(1, 1, newData.length, newData[0].length).setValues(newData);

Modifications

Vous pouvez modifier la bibliothèque autant que vous le souhaitez. Vous trouverez ci-dessous une modification facultative.

Supprimer les lignes contenant des données correspondantes dans certaines colonnes

Au lieu de supprimer les lignes qui correspondent complètement, vous pouvez supprimer les lignes contenant des données correspondantes dans une ou deux colonnes seulement. Pour ce faire, vous pouvez modifier l'instruction conditionnelle.

Dans l'exemple de code, mettez à jour la ligne suivante:

    if(row.join() == newData[j].join()){
      duplicate = true;
    }

Remplacez la ligne par le code suivant:

    if(row[0] == newData[j][0] && row[1] == newData[j][1]){
      duplicate = true;
    }

L'instruction conditionnelle ci-dessus trouve des doublons chaque fois que deux lignes contiennent les mêmes données dans les première et deuxième colonnes de la feuille.

Contributeurs

Cet exemple a été créé par Romain Vialard, un expert en développement Google. Suivez Romain sur Twitter (@romain_vialard).

Cet exemple est géré par Google avec l'aide d'Experts Google Developers.

Étapes suivantes