Скрипт Google для удаления дубликатов сверху вниз

У меня есть скрипт, который объединяет три скрипта, чтобы сделать следующее:

1) Вставьте строки с одной вкладки в верхнюю часть другой вкладки 2) Удалить дубликаты с вкладки, в которой данные только что были добавлены 3) Очистите старую вкладку, с которой были только что перенесены данные

Для сценария De-dupe он удаляет строки, начиная снизу, а затем поднимаясь вверх. Итак, я установил, а существующие данные удалил. Мне нужно, чтобы он начал сверху и спускался вниз. Поэтому, если новые записи строк, перенесенные из первого скрипта, окажутся дубликатами, вместо этого следует удалить их.

Как я могу заставить сценарий дедупликации работать в противоположном направлении?

Я нашел обратную логику по ссылке ниже, но не могу найти способ заставить ее работать с моим скриптом и продолжать получать ошибки. Я также не уверен, что это будет лучшая методология, соответствующая моему общему сценарию.

Ссылка: Удаление повторяющихся строк в электронной таблице Google из конечной строки

function Run(){
  insert();
  removeDuplicates();
  clear1();
}
function insert() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var source = ss.getSheetByName('Candidate Refresh'); // change here
  var des = ss.getSheetByName('Candidate Listing'); // change here

  var sv = source
    .getDataRange()
    .getValues();
  sv.shift();
  des.insertRowsAfter(1, sv.length);
  des.getRange(2, 1, sv.length, source.getLastColumn()).setValues(sv);
}

//Code in Question Start

function removeDuplicates() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var rows = sheet.getLastRow();
  var firstColumn = sheet.getRange(1, 2, rows, 1).getValues();
firstColumn = firstColumn.map(function (e) {return e[0]})
  for (var i = rows; i >0; i--) {
    if (firstColumn.indexOf(firstColumn[i-1]) != i-1) {
      sheet.deleteRow(i);
    }
  }
}

//Code in Question End

function clear1() {
  var sheet = SpreadsheetApp.getActive().getSheetByName('Candidate Refresh');
  sheet.getRange('A2:K100').clearContent()

}

Если окажется, что новые строки в верхней части листа дублируются, удалите новые строки в верхней части.

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
1 644
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

попробуй это:

function removeDuplicates() {
  var sheet=SpreadsheetApp.getActiveSheet();
  var rows=sheet.getLastRow();
  var firstColumn=sheet.getRange(1, 2, rows, 1).getValues();
  firstColumn = firstColumn.map(function(e){return e[0]})
  var uA=[];
  for (var i=rows;i>0;i--) {
    if (uA.indexOf(firstColumn[i-1])!=-1) {
      sheet.deleteRow(i);
    }else{
      uA.push(firstColumn[i-1]);
    }
  }
}

спасибо за вклад здесь. После запуска он не удаляет дубликаты, хотя при запуске я не получаю никаких ошибок.

davecut85 10.04.2019 23:25

Я только что изменил его, попробуйте еще раз.

Cooper 10.04.2019 23:28

Рад помочь вам.

Cooper 10.04.2019 23:34

Другие вопросы по теме

Запустите 2 функции внутри основной функции
Возвращает индекс последнего вхождения строки в столбце
Редактор сценариев Google Sheet - способы удаления нескольких вкладок, если имя вкладки не найдено в массиве
Есть ли сценарий, который я могу использовать для поиска дубликатов между двумя электронными таблицами и добавления данных из строки на одном листе в другой?
Есть ли код для Google Sheets, который перемещает каждую вкладку определенного цвета в конец моего списка вкладок?
Как использовать данные из раскрывающихся меню и два других критерия для заполнения таблицы?
Невозможно использовать команду gs_new() для экспорта фрейма данных в googlesheets
Макрос Google Sheets для изменения цвета фона ячейки в зависимости от вводимого текста
Включить скрытую переменную в форму, отправленную по электронной почте — скрипт Google Apps
Элемент поиска как «Панель инструментов» в сценарии листа Google