我有一个脚本,该脚本结合了三个脚本来执行以下操作:
1)将行从一个选项卡插入另一选项卡的顶部 2)从刚添加数据的标签中删除重复项 3)清除原来的数据从中移植过来的旧标签
对于“重复数据删除”脚本,它将删除从底部开始然后向上的行。因此,我已经建立并删除了现有数据。我需要做的是从顶部开始然后向下。因此,如果发现从第一个脚本移植过来的新行记录是重复的,则应将其删除。
如何使重复数据删除脚本本质上以相反的方式处理?
我确实通过下面的链接找到了反向逻辑,但是我找不到一种方法可以使其与我的脚本一起使用并不断出错。我也不确定这是否是适合我整体脚本的最佳方法。
链接:Removing Duplicate Rows in a google Spreadsheet from the end row
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()
}
如果发现工作表顶部的新行重复,请删除顶部的新行。
答案 0 :(得分: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]);
}
}
}