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

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

Цели

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

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

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

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

Настройте сценарий

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

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

    листы/removingDuulates/removingDuulates.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. Нажмите «Сохранить». Значок сохранения .

  6. В левом верхнем углу нажмите «Проект без названия» .

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

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

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

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

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

  12. Слева нажмите Настройки проекта. Значок настроек проекта .

  13. В разделе «Идентификаторы» скопируйте идентификатор сценария для использования на более позднем этапе.

Запустите сценарий

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

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

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

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

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

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

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

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

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

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

листы/removingDuulates/removingDuulates.gs
const sheet = SpreadsheetApp.getActiveSheet();
const data = sheet.getDataRange().getValues();

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

листы/removingDuulates/removingDuulates.gs
const newData = Object.values(uniqueData);

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

листы/removingDuulates/removingDuulates.gs
uniqueData[key] = uniqueData[key] || row;

Наконец, сценарий удаляет существующее содержимое листа и вставляет содержимое массива newData .

листы/removingDuulates/removingDuulates.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.

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