我发现此代码用于删除Google spraedsheet中的重复行: 从这个网址: https://developers.google.com/apps-script/articles/removing_duplicates
function removeDuplicates() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet1');
var data = sheet.getDataRange().getValues();
var last=sheet.getLastRow();
var newData = new Array();
for(i in data){
//Logger.log(i);
var row = data[i];
//Logger.log(row[5]);
var duplicate = false;
for(j in newData){
//Logger.log(newData[j][5]);
if(row[5] == newData[j][5]){
duplicate = true;
}
}
if(!duplicate){
newData.push(row);
}
}
sheet.clearContents();
sheet.getRange(1, 1, newData.length, newData[0].length).setValues(newData);
}
但是这个函数开始从第一行删除重复行,我想开始从工作表的最后一行删除。 我怎么能这样做?
答案 0 :(得分:1)
尝试使用JavaScript数组reverse()
方法。它在下面使用了两次:
function removeDuplicates() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet1');
var data = sheet.getDataRange().getValues();
data.reverse(); //reverses the row order.
var last=sheet.getLastRow();
var newData = new Array();
for(i in data){
//Logger.log(i);
var row = data[i];
//Logger.log(row[5]);
var duplicate = false;
for(j in newData){
//Logger.log(newData[j][5]);
if(row[5] == newData[j][5]){
duplicate = true;
}
}
if(!duplicate){
newData.push(row);
}
}
newData.reverse(); // reverses your data back to its original order.
sheet.clearContents();
sheet.getRange(1, 1, newData.length, newData[0].length).setValues(newData);
}
如果有问题,请告诉我。
答案 1 :(得分:0)
此代码从顶部到底部,即从第1行到第2行,我想,您想要反向,即从底部到顶部,最后一行到第一行。
对于此结果,您可以尝试以下代码段:
function removeDuplicates() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet1');
var data = sheet.getRange(1, 1, sheet.getLastRow(), 6).getValues();
var last=sheet.getLastRow();
var newData = new Array();
for(i = data.length - 1; i--; i >= 0){
//Logger.log(i);
var row = data[i];
//Logger.log(row[5]);
var duplicate = false;
for(j = newData.length - 1; j--; j >= 0){
//Logger.log(newData[j][5]);
if(row[5] == newData[j][5]){
duplicate = true;
}
}
if(!duplicate){
newData.unshift(row); //I am trying to insert element in start of array instead of end
}
}
sheet.clearContents();
sheet.getRange(1, 1, newData.length,newData[0].length).setValues(newData);
}
此代码未经测试。如果这不起作用或者您有任何反馈/问题,请告诉我。
感谢。
答案 2 :(得分:0)
我相信我来得很晚,可以使您免于所有麻烦,但只是为了确保到达此线程的人们不会以同样的挫败感结束,而是按照此处提供的指南来解决问题->
https://ladwhocodes.blogspot.com/2019/02/remove-duplicate-rows-from-your-google.html
按照链接上的注释获得所需的内容。