Краткое руководство по библиотеке

Создайте библиотеку Apps Script , которую можно использовать для удаления повторяющихся строк в данных электронных таблиц.

Цели

  • Настройте скрипт.
  • Запустите скрипт.

Предварительные требования

Для использования этого примера необходимы следующие условия:

  • Для работы потребуется учетная запись Google (для учетных записей Google Workspace может потребоваться подтверждение администратора).
  • Веб-браузер с доступом в интернет.

Настройте скрипт

Для создания библиотеки выполните следующие шаги:

  1. Войдите в свой аккаунт Google.
  2. Чтобы открыть редактор скриптов, перейдите по адресу script.google.com .
  3. В левом верхнем углу нажмите «Новый проект» .
  4. Удалите весь код в редакторе скриптов и вставьте приведенный ниже код.

    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 (const 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. Нажмите «Сохранить». значок сохранения .

  6. В левом верхнем углу нажмите «Безымянный проект» .

  7. Назовите свой скрипт , удалите повторяющиеся строки и нажмите «Переименовать» .

  8. Нажмите «Развернуть» > «Новое развертывание» .

  9. Рядом с пунктом «Выберите тип» нажмите «Включить типы развертывания». Значок для включения типов развертывания > Библиотека .

  10. Введите описание библиотеки, например, «Удаление повторяющихся строк» . Любой пользователь, имеющий доступ к библиотеке, сможет просмотреть это описание.

  11. Нажмите «Развернуть» .

  12. В левой части экрана нажмите «Настройки проекта» . Значок для настроек проекта .

  13. В разделе «Идентификаторы» скопируйте идентификатор скрипта для использования на следующем шаге.

Запустите скрипт

Для использования библиотеки вам необходимы как минимум права на просмотр проекта Apps Script, к которому она относится. Поскольку вы создали библиотеку, у вас есть все необходимые права для её использования. Если вы хотите разрешить другим пользователям использовать библиотеку, предоставьте им права на просмотр проекта Apps Script.

Для использования библиотеки выполните следующие действия:

  1. Откройте электронную таблицу Google Sheets, содержащую данные с повторяющимися строками. Чтобы использовать пример таблицы, создайте копию таблицы "Пример повторяющихся строк" .
  2. Нажмите «Расширения» > «Скрипты приложений» .
  3. Рядом с разделом «Библиотеки» нажмите « библиотеку».
  4. В разделе «Идентификатор скрипта» вставьте идентификатор скрипта из проекта Apps Script библиотеки, который вы скопировали в предыдущем разделе.
  5. Нажмите «Поиск» .
  6. В разделе «Версия» выберите 1 .
  7. Нажмите «Добавить» .
  8. Удалите весь код в редакторе скриптов и вставьте приведенный ниже код.

    function runLibrary() {
     Removeduplicaterows.removeDuplicates();
    }
    
  9. В раскрывающемся списке функций выберите runLibrary .

  10. Нажмите «Выполнить» .

  11. Вернитесь к электронной таблице, чтобы просмотреть обновленные данные без повторяющихся строк.

Просмотрите код

Чтобы просмотреть код Apps Script для этого решения, нажмите «Просмотреть исходный код» ниже:

Посмотреть исходный код

Сначала скрипт выполняет один запрос к электронной таблице для получения всех данных. Вы можете читать таблицу построчно, но операции JavaScript значительно быстрее, чем взаимодействие с другими сервисами, такими как электронные таблицы. Чем меньше запросов вы делаете, тем быстрее выполняется скрипт. Это важно, поскольку максимальное время выполнения каждого скрипта составляет 6 минут.

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

Переменная data представляет собой двумерный массив JavaScript, содержащий все значения в таблице. newData — это пустой массив, в который скрипт помещает все неповторяющиеся строки.

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

Первый цикл for перебирает каждую строку в двумерном массиве data . Для каждой строки второй цикл проверяет, существует ли уже другая строка с соответствующими данными в массиве newData . Если дубликат отсутствует, строка добавляется в массив newData .

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

В заключение скрипт удаляет существующее содержимое листа и вставляет содержимое массива newData .

sheets/removingDuplicates/removingDuplicates.gs
sheet.clearContents();
const newData = Object.values(uniqueData);
sheet.getRange(1, 1, newData.length, newData[0].length).setValues(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.

Следующие шаги