У меня есть скрипт, который объединяет три скрипта, чтобы сделать следующее:
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()
}
Если окажется, что новые строки в верхней части листа дублируются, удалите новые строки в верхней части.
попробуй это:
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]);
}
}
}
Я только что изменил его, попробуйте еще раз.
Рад помочь вам.
спасибо за вклад здесь. После запуска он не удаляет дубликаты, хотя при запуске я не получаю никаких ошибок.