Krótkie wprowadzenie do biblioteki

Utwórz bibliotekę Apps Script, w której możesz usuwać zduplikowane wiersze w danych arkusza kalkulacyjnego.

Cele

  • Skonfiguruj skrypt.
  • Uruchom skrypt.

Wymagania wstępne

Aby korzystać z tego przykładu, musisz spełnić te wymagania wstępne:

  • konta Google (konta Google Workspace mogą wymagać zatwierdzenia przez administratora),
  • Przeglądarka z dostępem do internetu.

Konfigurowanie skryptu

Aby utworzyć bibliotekę, wykonaj te czynności:

  1. Zaloguj się na konto Google.
  2. Aby otworzyć edytor skryptów, wejdź na script.google.com.
  3. W lewym górnym rogu kliknij Nowy projekt.
  4. Usuń cały kod z edytora skryptów i wklej go poniżej.

    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. Kliknij Zapisz Ikona zapisania.

  6. W lewym górnym rogu kliknij Projekt bez tytułu.

  7. Nazwij skrypt Usuń zduplikowane wiersze i kliknij Zmień nazwę.

  8. Kliknij Wdróż > Nowe wdrożenie.

  9. Obok opcji Wybierz typ kliknij Włącz typy wdrożeń Ikona włączania typów wdrożeń > Biblioteka.

  10. Wpisz opis biblioteki, np. Usuń zduplikowane wiersze. Każdy, kto ma dostęp do biblioteki, może wyświetlić ten opis.

  11. Kliknij Wdróż.

  12. Po lewej stronie kliknij Ustawienia projektu Ikona ustawień projektu.

  13. W sekcji Identyfikatory skopiuj identyfikator skryptu, który będzie Ci potrzebny w kolejnym kroku.

Uruchom skrypt

Aby korzystać z biblioteki, musisz mieć co najmniej uprawnienia do wyświetlania w jej projekcie Apps Script. Biblioteka została utworzona, więc masz wymagane uprawnienia, aby z niej korzystać. Jeśli chcesz zezwolić innym na korzystanie z biblioteki, przyznaj im uprawnienia do wyświetlania projektu Apps Script.

Aby użyć biblioteki, wykonaj te czynności:

  1. Otwórz arkusz kalkulacyjny Arkuszy Google zawierający dane ze zduplikowanymi wierszami. Aby użyć przykładowego arkusza kalkulacyjnego, utwórz kopię arkusza Przykładowe zduplikowane wiersze.
  2. Kliknij Rozszerzenia > Apps Script.
  3. Obok opcji Biblioteki kliknij Dodaj bibliotekę .
  4. W sekcji Identyfikator skryptu wklej identyfikator skryptu z projektu Apps Script biblioteki skopiowanego w poprzedniej sekcji.
  5. Kliknij Wyszukaj.
  6. W sekcji Wersja wybierz 1.
  7. Kliknij Dodaj.
  8. Usuń cały kod z edytora skryptów i wklej go poniżej.

    function runLibrary() {
     Removeduplicaterows.removeDuplicates();
    }
    
  9. W menu funkcji wybierz runLibrary.

  10. Kliknij Uruchom.

  11. Wróć do arkusza kalkulacyjnego, aby wyświetlić zaktualizowane dane bez zduplikowanych wierszy.

Sprawdź kod

Aby sprawdzić kod Apps Script tego rozwiązania, kliknij Wyświetl kod źródłowy poniżej:

Wyświetl kod źródłowy

Najpierw skrypt generuje jedno wywołanie do arkusza kalkulacyjnego w celu pobrania wszystkich danych. Arkusz może czytać wiersz po wierszu, ale operacje JavaScript są znacznie szybsze niż w przypadku innych usług, takich jak Arkusz kalkulacyjny. Im mniej połączeń wykonujesz, tym szybciej biegnie. To ważne, ponieważ maksymalny czas działania każdego skryptu wynosi 6 minut.

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

Zmienna data to dwuwymiarowa tablica JavaScript, która zawiera wszystkie wartości z arkusza. newData to pusta tablica, w której skrypt umieszcza wszystkie niepowtarzające się wiersze.

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

Pierwsza pętla for występuje po każdym wierszu w tablicy dwuwymiarowej data. W przypadku każdego wiersza druga pętla sprawdza, czy w tablicy newData znajduje się już inny wiersz z pasującymi danymi. Jeśli wiersz nie jest duplikatem, wiersz jest przekazywany do tablicy newData.

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

Na koniec skrypt usuwa istniejącą treść arkusza i wstawia zawartość tablicy newData.

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

Modyfikacje

Możesz ją edytować według swoich potrzeb. Poniżej przedstawiamy opcjonalną modyfikację.

Usuwanie wierszy z pasującymi danymi w niektórych kolumnach

Zamiast usuwać wiersze, które są w całości dopasowane, możesz usunąć wiersze z pasującymi danymi w jednej lub dwóch kolumnach. Możesz zmienić instrukcję warunkową.

W przykładowym kodzie zaktualizuj ten wiersz:

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

Zastąp ten wiersz tym kodem:

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

Powyższe wyrażenie warunkowe znajduje duplikaty za każdym razem, gdy 2 wiersze mają te same dane w pierwszej i drugiej kolumnie arkusza.

Współtwórcy

Tę próbkę utworzyła Romain Vialard, ekspert ds. programistów Google. Obserwuj Romana na Twitterze: @romain_vialard.

Ta próbka jest udostępniana przez Google z pomocą Ekspertów Produktowych Google.

Dalsze kroki