Краткое руководство по библиотеке
Оптимизируйте свои подборки
Сохраняйте и классифицируйте контент в соответствии со своими настройками.
Создайте библиотеку Apps Script , которую можно использовать для удаления дубликатов строк в данных электронных таблиц.
Цели
- Настройте сценарий.
- Запустите скрипт.
Предпосылки
Для использования этого образца вам необходимы следующие предварительные условия:
- Учетная запись Google (для учетных записей Google Workspace может потребоваться одобрение администратора).
- Веб-браузер с доступом в Интернет.
Настройте сценарий
Чтобы создать библиотеку, выполните следующие шаги:
- Войдите в свою учетную запись Google.
- Чтобы открыть редактор скриптов, перейдите по адресу script.google.com .
- В левом верхнем углу нажмите «Новый проект» .
Удалите весь код в редакторе скриптов и вставьте код ниже.
Нажмите «Сохранить».
.
В левом верхнем углу нажмите «Проект без названия» .
Дайте имя вашему скрипту . Удалите повторяющиеся строки и нажмите «Переименовать» .
Нажмите Развернуть > Новое развертывание .
Рядом с пунктом «Выбрать тип» нажмите «Включить типы развертывания».
> Библиотека .
Введите описание библиотеки, например «Удалить дублирующиеся строки» . Любой, у кого есть доступ к библиотеке, сможет просмотреть это описание.
Нажмите Развернуть .
Слева нажмите «Настройки проекта» .
.
В разделе «Идентификаторы» скопируйте идентификатор скрипта для использования на следующем этапе.
Запустить скрипт
Чтобы использовать библиотеку, вам необходимо иметь как минимум разрешение на просмотр проекта Apps Script. Поскольку вы создали библиотеку, у вас есть необходимые разрешения на её использование. Чтобы разрешить другим пользователям использовать библиотеку, предоставьте им разрешение на просмотр проекта Apps Script.
Чтобы воспользоваться библиотекой, выполните следующие действия:
- Откройте таблицу Google Таблиц с данными, содержащими дублирующиеся строки. Чтобы использовать образец таблицы, сделайте копию образца таблицы с дублирующимися строками .
- Нажмите Расширения > Скрипт приложения .
- Рядом с пунктом Библиотеки нажмите add библиотеку.
- В разделе Script ID вставьте ID скрипта из проекта библиотеки Apps Script, скопированного вами в предыдущем разделе.
- Нажмите «Поиск» .
- В разделе Версия выберите 1 .
- Нажмите «Добавить» .
Удалите весь код в редакторе скриптов и вставьте код ниже.
function runLibrary() {
Removeduplicaterows.removeDuplicates();
}
В раскрывающемся списке функций выберите runLibrary .
Нажмите кнопку Выполнить .
Вернитесь к электронной таблице, чтобы просмотреть обновленные данные без дублирующихся строк.
Проверьте код
Чтобы просмотреть код Apps Script для этого решения, нажмите «Просмотреть исходный код» ниже:
Посмотреть исходный код
Сначала скрипт выполняет один вызов электронной таблицы для извлечения всех данных. Вы можете читать таблицу построчно, но операции JavaScript выполняются значительно быстрее, чем обращение к другим сервисам, таким как Spreadsheet. Чем меньше вызовов, тем быстрее всё происходит. Это важно, поскольку время выполнения каждого скрипта не превышает 6 минут.
Переменная data
— это двумерный массив JavaScript, содержащий все значения в таблице. newData
— это пустой массив, в который скрипт помещает все неповторяющиеся строки.
Первый цикл for
перебирает каждую строку двумерного массива data
. Для каждой строки второй цикл проверяет, существует ли в массиве newData
другая строка с такими же данными. Если строка не дублируется, она помещается в массив newData
.
Наконец, скрипт удаляет существующее содержимое листа и вставляет содержимое массива newData
.
Модификации
Вы можете редактировать библиотеку столько, сколько захотите. Ниже представлено необязательное изменение.
Удалить строки с совпадающими данными в некоторых столбцах
Вместо того, чтобы удалять все совпадающие строки, вы можете удалить строки с совпадающими данными только в одном или двух столбцах. Для этого можно изменить условный оператор.
В примере кода обновите следующую строку:
if(row.join() == newData[j].join()){
duplicate = true;
}
Замените строку следующим кодом:
if(row[0] == newData[j][0] && row[1] == newData[j][1]){
duplicate = true;
}
Приведенный выше условный оператор находит дубликаты каждый раз, когда две строки содержат одинаковые данные в первом и втором столбцах листа.
Авторы
Этот пример был создан Роменом Виаларом, экспертом Google по разработке. Подпишитесь на Ромена в Твиттере: @romain_vialard .
Этот образец поддерживается компанией Google с помощью экспертов Google Developer Experts.
Следующие шаги
Если не указано иное, контент на этой странице предоставляется по лицензии Creative Commons "С указанием авторства 4.0", а примеры кода – по лицензии Apache 2.0. Подробнее об этом написано в правилах сайта. Java – это зарегистрированный товарный знак корпорации Oracle и ее аффилированных лиц.
Последнее обновление: 2025-08-29 UTC.
[null,null,["Последнее обновление: 2025-08-29 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)"]]