Создайте библиотеку Apps Script , которую можно использовать для удаления повторяющихся строк в данных электронной таблицы.
Цели
- Настройте сценарий.
- Запустите сценарий.
Предварительные условия
Для использования этого образца необходимы следующие предварительные условия:
- Учетная запись Google (для учетных записей Google Workspace может потребоваться одобрение администратора).
- Веб-браузер с доступом в Интернет.
Настройте сценарий
Чтобы собрать библиотеку, выполните следующие действия:
- Войдите в свою учетную запись Google.
- Чтобы открыть редактор сценариев, перейдите на script.google.com .
- В левом верхнем углу нажмите Новый проект .
Удалите весь код в редакторе скриптов и вставьте код ниже.
Нажмите «Сохранить». .
В левом верхнем углу нажмите «Проект без названия» .
Назовите свой скрипт. Удалите повторяющиеся строки и нажмите «Переименовать» .
Нажмите «Развертывание» > «Новое развертывание» .
Рядом с пунктом «Выбрать тип» нажмите «Включить типы развертывания». > Библиотека .
Введите описание библиотеки, например «Удалить повторяющиеся строки» . Посмотреть это описание может любой, у кого есть доступ к библиотеке.
Нажмите «Развернуть» .
Слева нажмите Настройки проекта. .
В разделе «Идентификаторы» скопируйте идентификатор сценария для использования на следующем этапе.
Запустите сценарий
Чтобы использовать библиотеку, у вас должно быть как минимум разрешение на просмотр ее проекта Apps Script. Поскольку вы создали библиотеку, у вас есть необходимые разрешения для ее использования. Если вы хотите, чтобы другие могли использовать библиотеку, дайте им разрешение на просмотр проекта Apps Script.
Чтобы использовать библиотеку, выполните следующие действия:
- Откройте таблицу Google Sheets, содержащую данные с повторяющимися строками. Чтобы использовать образец электронной таблицы, сделайте копию таблицы «Пример повторяющихся строк» .
- Нажмите Расширения > Скрипт приложений .
- Рядом с пунктом «Библиотеки» нажмите « библиотеку».
- В разделе «Идентификатор сценария» вставьте идентификатор сценария из проекта сценария приложений библиотеки, который вы скопировали в предыдущем разделе.
- Нажмите «Искать» .
- В разделе Версия выберите 1 .
- Нажмите Добавить .
Удалите весь код в редакторе скриптов и вставьте код ниже.
function runLibrary() { Removeduplicaterows.removeDuplicates(); }
В раскрывающемся списке функций выберите runLibrary .
Нажмите «Выполнить» .
Вернитесь в электронную таблицу, чтобы просмотреть обновленные данные без повторяющихся строк.
Просмотрите код
Чтобы просмотреть код скрипта приложений для этого решения, нажмите «Просмотреть исходный код» ниже:
Посмотреть исходный код
Сначала сценарий выполняет одиночный вызов электронной таблицы для получения всех данных. Вы можете читать лист построчно, но операции 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.