Kurzanleitung für die Bibliothek

Erstellen Sie eine Apps Script-Bibliothek, mit der Sie doppelte Zeilen in Tabellendaten entfernen können.

Zielsetzungen

  • Richten Sie das Skript ein.
  • Führen Sie das Skript aus.

Voraussetzungen

Um dieses Beispiel zu verwenden, müssen die folgenden Voraussetzungen erfüllt sein:

  • Ein Google-Konto (für Google Workspace-Konten ist möglicherweise die Administratorgenehmigung erforderlich).
  • Ein Webbrowser mit Zugang zum Internet.

Skript einrichten

So erstellen Sie die Bibliothek:

  1. Melden Sie sich in Ihrem Google-Konto an.
  2. Rufen Sie script.google.com auf, um den Skripteditor zu öffnen.
  3. Klicken Sie links oben auf Neues Projekt.
  4. Löschen Sie jeglichen Code im Skripteditor und fügen Sie den unten angegebenen Code ein.

    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. Klicken Sie auf „Speichern“ Symbol „Speichern“.

  6. Klicken Sie links oben auf Unbenanntes Projekt.

  7. Nennen Sie das Skript Doppelte Zeilen entfernen und klicken Sie auf Umbenennen.

  8. Klicken Sie auf Bereitstellen > Neue Bereitstellung.

  9. Klicken Sie neben Typ auswählen auf „Bereitstellungstypen aktivieren“ Das Symbol zum Aktivieren von Bereitstellungstypen > Bibliothek.

  10. Geben Sie eine Beschreibung der Bibliothek ein, z. B. Doppelte Zeilen entfernen. Jeder mit Zugriff auf die Bibliothek kann diese Beschreibung sehen.

  11. Klicken Sie auf Bereitstellen.

  12. Klicken Sie links auf Projekteinstellungen Das Symbol für die Projekteinstellungen.

  13. Kopieren Sie unter IDs die Skript-ID zur Verwendung in einem späteren Schritt.

Skript ausführen

Wenn Sie eine Bibliothek verwenden möchten, müssen Sie mindestens Leseberechtigungen für das zugehörige Apps Script-Projekt haben. Da Sie die Bibliothek erstellt haben, haben Sie die erforderlichen Berechtigungen, um sie zu verwenden. Wenn Sie möchten, dass andere die Bibliothek verwenden können, müssen Sie ihnen die Berechtigung zum Ansehen des Apps Script-Projekts erteilen.

So verwenden Sie die Bibliothek:

  1. Öffnen Sie eine Google-Tabelle, die Daten mit doppelten Zeilen enthält. Wenn Sie eine Beispieltabelle verwenden möchten, erstellen Sie eine Kopie der Tabelle Beispiel für doppelte Zeilen.
  2. Klicken Sie auf Erweiterungen > Apps Script.
  3. Klicken Sie neben Bibliotheken auf „Bibliothek hinzufügen“ .
  4. Fügen Sie im Abschnitt Script-ID die Skript-ID aus dem Apps Script-Projekt der Bibliothek ein, die Sie im vorherigen Abschnitt kopiert haben.
  5. Klicken Sie auf Suchen.
  6. Wählen Sie im Abschnitt Version die Option 1 aus.
  7. Klicken Sie auf Hinzufügen.
  8. Löschen Sie jeglichen Code im Skripteditor und fügen Sie den unten angegebenen Code ein.

    function runLibrary() {
     Removeduplicaterows.removeDuplicates();
    }
    
  9. Wählen Sie im Drop-down-Menü der Funktion runLibrary aus.

  10. Klicken Sie auf Ausführen.

  11. Kehren Sie zur Tabelle zurück, um die aktualisierten Daten ohne doppelte Zeilen anzuzeigen.

Code ansehen

Wenn Sie sich den Apps Script-Code für diese Lösung ansehen möchten, klicken Sie unten auf Quellcode ansehen:

Quellcode aufrufen

Zuerst ruft das Skript die Tabellenkalkulation einzeln auf, um alle Daten abzurufen. Sie können das Tabellenblatt Zeile für Zeile lesen, aber JavaScript-Vorgänge sind deutlich schneller als die Kommunikation mit anderen Diensten wie Google Tabellen. Je weniger Anrufe Sie tätigen, desto schneller geht es. Dies ist wichtig, da jede Skriptausführung eine maximale Ausführungszeit von 6 Minuten hat.

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

Die Variable data ist ein zweidimensionales JavaScript-Array, das alle Werte aus dem Tabellenblatt enthält. newData ist ein leeres Array, in das das Skript alle nicht duplizierten Zeilen einfügt.

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

Die erste for-Schleife durchläuft jede Zeile im zweidimensionalen Array data. Für jede Zeile wird in der zweiten Schleife getestet, ob im Array newData bereits eine andere Zeile mit übereinstimmenden Daten vorhanden ist. Handelt es sich nicht um ein Duplikat, wird die Zeile in das Array newData verschoben.

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

Schließlich löscht das Skript den vorhandenen Inhalt des Tabellenblatts und fügt den Inhalt des Arrays newData ein.

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

Abwandlung

Sie können die Bibliothek nach Belieben bearbeiten. Unten sehen Sie eine optionale Änderung.

Zeilen mit übereinstimmenden Daten in einigen Spalten entfernen

Anstatt Zeilen mit vollständiger Übereinstimmung zu entfernen, können Sie Zeilen mit übereinstimmenden Daten in nur einer oder zwei der Spalten entfernen. Dazu können Sie die bedingte Anweisung ändern.

Aktualisieren Sie im Beispielcode die folgende Zeile:

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

Ersetzen Sie die Zeile durch den folgenden Code:

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

Mit der obigen bedingten Anweisung werden Duplikate jedes Mal gesucht, wenn zwei Zeilen in der ersten und zweiten Spalte des Tabellenblatts dieselben Daten enthalten.

Beitragende

Dieses Beispiel wurde von Romain Vialard erstellt, einem Google-Entwicklerexperten. Folgen Sie Romain auf Twitter unter @romain_vialard.

Dieses Beispiel wird von Google mit der Unterstützung von Google Developers-Experten gepflegt.

Nächste Schritte