Krótkie wprowadzenie do biblioteki
Zadbaj o dobrą organizację dzięki kolekcji
Zapisuj i kategoryzuj treści zgodnie ze swoimi preferencjami.
Utwórz bibliotekę Apps Script, której możesz używać do usuwania zduplikowanych wierszy w danych arkusza kalkulacyjnego.
Cele
- Skonfiguruj skrypt.
- Uruchom skrypt.
Wymagania wstępne
Aby użyć tego przykładu, musisz spełnić te wymagania wstępne:
- Konto Google (w przypadku kont Google Workspace może być wymagana zgoda administratora).
- przeglądarkę internetową z dostępem do internetu,
Konfigurowanie skryptu
Aby utworzyć bibliotekę, wykonaj te czynności:
- Zaloguj się na konto Google.
- Aby otworzyć edytor skryptów, wejdź na stronę script.google.com.
- W lewym górnym rogu kliknij Nowy projekt.
Usuń cały kod z edytora skryptów i wklej poniższy kod.
Kliknij Zapisz
.
W lewym górnym rogu kliknij Projekt bez tytułu.
Nazwij skrypt Usuń zduplikowane wiersze i kliknij Zmień nazwę.
Kliknij Wdróż > Nowe wdrożenie.
Obok pozycji Wybierz typ kliknij Włącz typy wdrożenia
> Biblioteka.
Wpisz opis biblioteki, np. Usuń zduplikowane wiersze. Każda osoba, która ma dostęp do biblioteki, może wyświetlić ten opis.
Kliknij Wdróż.
Po lewej stronie kliknij Ustawienia projektu
.
W sekcji Identyfikatory skopiuj identyfikator skryptu, aby użyć go w kolejnym kroku.
Uruchamianie skryptu
Aby używać biblioteki, musisz mieć co najmniej uprawnienia do wyświetlania jej projektu Apps Script. Jako twórca biblioteki masz
wymagane uprawnienia
do korzystania z niej. Jeśli chcesz umożliwić innym osobom korzystanie z biblioteki, przyznaj im uprawnienia do wyświetlania projektu Apps Script.
Aby korzystać z biblioteki, wykonaj te czynności:
- Otwórz arkusz kalkulacyjny w Arkuszach Google zawierający dane z duplikatami wierszy. Aby użyć przykładowego arkusza kalkulacyjnego, utwórz kopię arkusza Sample duplicate rows.
- Kliknij Rozszerzenia > Apps Script.
- Obok opcji Biblioteki kliknij Dodaj bibliotekęadd.
- W sekcji Identyfikator skryptu wklej identyfikator skryptu z projektu biblioteki Apps Script skopiowany w poprzedniej sekcji.
- Kliknij Wyszukaj.
- W sekcji Wersja wybierz 1.
- Kliknij Dodaj.
Usuń cały kod z edytora skryptów i wklej poniższy kod.
function runLibrary() {
Removeduplicaterows.removeDuplicates();
}
W menu funkcji wybierz runLibrary.
Kliknij Wykonaj.
Wróć do arkusza, 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 wykonuje jedno wywołanie arkusza kalkulacyjnego, aby pobrać wszystkie dane. Możesz odczytywać arkusz wiersz po wierszu, ale operacje JavaScript są znacznie szybsze niż komunikacja z innymi usługami, takimi jak Arkusze. Im mniej połączeń wykonasz, tym szybciej to zrobisz. Jest to ważne, ponieważ każde wykonanie skryptu ma maksymalny czas działania wynoszący 6 minut.
Zmienna data
to dwuwymiarowa tablica JavaScriptu, która zawiera wszystkie wartości w arkuszu. newData
to pusta tablica, w której skrypt umieszcza wszystkie niepowtarzające się wiersze.
Pierwsza pętla for
iteruje po każdym wierszu w data
dwuwymiarowej tablicy. W przypadku każdego wiersza druga pętla sprawdza, czy w tablicy newData
istnieje już inny wiersz z pasującymi danymi. Jeśli nie jest to duplikat, wiersz jest umieszczany w tablicy newData
.
Na koniec skrypt usuwa dotychczasową zawartość arkusza i wstawia zawartość tablicy newData
.
Reguły przekształcania
Możesz dowolnie edytować bibliotekę, aby dostosować ją do swoich potrzeb. Poniżej znajdziesz opcjonalną modyfikację.
Usuwanie wierszy z pasującymi danymi w niektórych kolumnach
Zamiast usuwać wiersze, które w całości pasują do siebie, możesz usunąć wiersze z pasującymi danymi tylko w jednej lub dwóch kolumnach. Aby to zrobić, możesz zmienić instrukcję warunkową.
W przykładowym kodzie zaktualizuj ten wiersz:
if(row.join() == newData[j].join()){
duplicate = true;
}
Zastąp wiersz tym kodem:
if(row[0] == newData[j][0] && row[1] == newData[j][1]){
duplicate = true;
}
Powyższy warunek znajduje duplikaty za każdym razem, gdy 2 wiersze mają te same dane w pierwszej i drugiej kolumnie arkusza.
Współtwórcy
Ten przykład został utworzony przez Romaina Vialarda, eksperta Google ds. deweloperów. Obserwuj Romaina na Twitterze: @romain_vialard.
Ten przykład jest obsługiwany przez Google przy pomocy ekspertów Google ds. technologii.
Dalsze kroki
O ile nie stwierdzono inaczej, treść tej strony jest objęta licencją Creative Commons – uznanie autorstwa 4.0, a fragmenty kodu są dostępne na licencji Apache 2.0. Szczegółowe informacje na ten temat zawierają zasady dotyczące witryny Google Developers. Java jest zastrzeżonym znakiem towarowym firmy Oracle i jej podmiotów stowarzyszonych.
Ostatnia aktualizacja: 2025-08-31 UTC.
[null,null,["Ostatnia aktualizacja: 2025-08-31 UTC."],[[["\u003cp\u003eThis guide provides step-by-step instructions to create an Apps Script library that removes duplicate rows from Google Sheets data.\u003c/p\u003e\n"],["\u003cp\u003eThe library uses a JavaScript function to identify and remove duplicate rows by comparing all column values within each row.\u003c/p\u003e\n"],["\u003cp\u003eUsers need a Google Account and a web browser to implement this solution, which involves setting up, deploying, and running the script within a spreadsheet.\u003c/p\u003e\n"],["\u003cp\u003eThe provided code can be modified to remove rows based on matching data in specific columns, enhancing the library's functionality.\u003c/p\u003e\n"]]],[],null,["# Library quickstart\n\nBuild an [Apps Script library](/apps-script/guides/libraries) that you can use to remove duplicate rows in spreadsheet data.\n\nObjectives\n----------\n\n- Set up the script.\n- Run the script.\n\nPrerequisites\n-------------\n\nTo use this sample, you need the following prerequisites:\n\n- A Google Account (Google Workspace accounts might require administrator approval).\n- A web browser with access to the internet.\n\nSet up the script\n-----------------\n\nTo build the library, take the following steps:\n\n1. Sign in to your Google Account.\n2. To open the script editor, go to [script.google.com](https://script.google.com/home).\n3. At the top left, click **New project**.\n4. Delete any code in the script editor and paste in the code below.\n\n sheets/removingDuplicates/removingDuplicates.gs \n [View on GitHub](https://github.com/googleworkspace/apps-script-samples/blob/main/sheets/removingDuplicates/removingDuplicates.gs) \n\n ```javascript\n /**\n * Removes duplicate rows from the current sheet.\n */\n function removeDuplicates() {\n const sheet = SpreadsheetApp.getActiveSheet();\n const data = sheet.getDataRange().getValues();\n const uniqueData = {};\n for (let row of data) {\n const key = row.join();\n uniqueData[key] = uniqueData[key] || row;\n }\n sheet.clearContents();\n const newData = Object.values(uniqueData);\n sheet.getRange(1, 1, newData.length, newData[0].length).setValues(newData);\n }\n ```\n5. Click Save .\n\n6. At the top left, click **Untitled project**.\n\n7. Name your script **Remove duplicate rows** and click **Rename**.\n\n8. Click **Deploy** \\\u003e **New deployment**.\n\n9. Next to **Select type** click Enable deployment types\n\n \\\u003e **Library**.\n\n10. Enter a description of the library, such as **Remove duplicate rows**. Anyone\n with access to the library can view this description.\n\n11. Click **Deploy**.\n\n12. At the left, click **Project settings** .\n\n13. Under **IDs**, copy the script ID for use in a later step.\n\nRun the script\n--------------\n\nTo use a library, you must have at least view permissions for its\nApps Script project. Since you created the library, you have the\nrequired permissions\nto use it. If you want to let others use the library, give them view permission\nfor the Apps Script project.\n\nTo use the library, take the following steps:\n\n1. Open a Google Sheets spreadsheet that has data with duplicate rows. To use a sample spreadsheet, [make a copy of the **Sample duplicate rows** spreadsheet](https://docs.google.com/spreadsheets/d/1_Tcb0kokQIYCEz_nWnxUHZp8nwTysjjxucMmVZ0DeSg/copy?usp=sharing).\n2. Click **Extensions** \\\u003e **Apps Script**.\n3. Next to **Libraries** , click Add a library add.\n4. In the **Script ID** section, paste the script ID from the library Apps Script project you copied in the previous section.\n5. Click **Look up**.\n6. In the **Version** section, select **1**.\n7. Click **Add**.\n8. Delete any code in the script editor and paste in the code below.\n\n function runLibrary() {\n Removeduplicaterows.removeDuplicates();\n }\n\n9. In the function dropdown, select **runLibrary**.\n\n10. Click **Run**.\n\n11. Return to the spreadsheet to view the updated data without duplicate rows.\n\nReview the code\n---------------\n\nTo review the Apps Script code for this solution, click **View source code**\nbelow: \n\n#### View the source code\n\n\nFirst, the script makes a single call to the spreadsheet to retrieve all the\ndata. You can choose to read the sheet row by row, but JavaScript operations are\nconsiderably faster than talking to other services like Spreadsheet. The fewer\ncalls you make, the faster it goes. This is important because each script\nexecution has a maximum run time of 6 minutes. \nsheets/removingDuplicates/removingDuplicates.gs \n[View on GitHub](https://github.com/googleworkspace/apps-script-samples/blob/main/sheets/removingDuplicates/removingDuplicates.gs) \n\n```javascript\nconst sheet = SpreadsheetApp.getActiveSheet();\nconst data = sheet.getDataRange().getValues();\n```\n\n\nThe variable `data` is a JavaScript 2-dimensional array that contains\nall the values in the sheet. `newData` is an empty array where the\nscript puts all the non-duplicate rows. \nsheets/removingDuplicates/removingDuplicates.gs \n[View on GitHub](https://github.com/googleworkspace/apps-script-samples/blob/main/sheets/removingDuplicates/removingDuplicates.gs) \n\n```javascript\nconst newData = Object.values(uniqueData);\n```\n\n\nThe first `for` loop iterates over each row in the `data`\n2-dimensional array. For each row, the second loop tests if another row with\nmatching data already exists in the `newData` array. If it's not a\nduplicate, the row is pushed into the `newData` array. \nsheets/removingDuplicates/removingDuplicates.gs \n[View on GitHub](https://github.com/googleworkspace/apps-script-samples/blob/main/sheets/removingDuplicates/removingDuplicates.gs) \n\n```javascript\nuniqueData[key] = uniqueData[key] || row;\n```\n\n\nFinally, the script deletes the existing content of the sheet and inserts\nthe content of the `newData` array. \nsheets/removingDuplicates/removingDuplicates.gs \n[View on GitHub](https://github.com/googleworkspace/apps-script-samples/blob/main/sheets/removingDuplicates/removingDuplicates.gs) \n\n```javascript\nsheet.clearContents();\nconst newData = Object.values(uniqueData);\nsheet.getRange(1, 1, newData.length, newData[0].length).setValues(newData);\n```\n\nModifications\n-------------\n\nYou can edit the library as much as you'd like to fit your needs. Below is an\noptional modification. \n\n#### Remove rows with matching data in some columns\n\n\nInstead of removing rows that match entirely, you might want to remove rows with\nmatching data in just one or two of the columns. To do that, you can change the\nconditional statement.\n\n\nIn the sample code, update the following line: \n\n```transact-sql\n if(row.join() == newData[j].join()){\n duplicate = true;\n }\n```\n\n\nReplace the line with the following code: \n\n```transact-sql\n if(row[0] == newData[j][0] && row[1] == newData[j][1]){\n duplicate = true;\n }\n```\n\n\nThe above conditional statement finds duplicates each time two rows have the\nsame data in the first and second columns of the sheet.\n\nContributors\n------------\n\nThis sample was created by Romain Vialard, a Google Developer Expert. Follow\nRomain on Twitter [@romain_vialard](https://twitter.com/romain_vialard).\n\nThis sample is maintained by Google with the help of Google Developer Experts.\n\nNext steps\n----------\n\n- [Libraries](/apps-script/guides/libraries)\n- [Create and manage deployments](/apps-script/concepts/deployments)"]]