【发布时间】:2019-12-02 20:23:25
【问题描述】:
我试图通过检查在“电子邮件地址”列下输入的相同电子邮件地址来突出显示工作表中的重复行。
我有一些代码(如下)可以执行此操作 - 它根据“电子邮件地址”下的重复值查找重复行并将它们突出显示为红色。但是,一旦我重新访问工作表,手动删除重复的行并重新运行脚本,同一行将再次突出显示。为什么会发生这种情况,我可以做些什么来确保当我更新工作表时,(现在)唯一的行不会再次突出显示?
function findDupes() {
var CHECK_COLUMNS = [3];
var sourceSheet = SpreadsheetApp.getActiveSheet();
var numRows = sourceSheet.getLastRow();
var numCols = sourceSheet.getLastColumn();
var ss = SpreadsheetApp.getActiveSpreadsheet();
var newSheet = ss.insertSheet("FindDupes");
for (var i = 0; i < CHECK_COLUMNS.length; i++) {
var sourceRange = sourceSheet.getRange(1,CHECK_COLUMNS[i],numRows);
var nextCol = newSheet.getLastColumn() + 1;
sourceRange.copyTo(newSheet.getRange(1,nextCol,numRows));
}
var dupes = false;
var data = newSheet.getDataRange().getValues();
for (i = 1; i < data.length - 1; i++) {
for (j = i+1; j < data.length; j++) {
if (data[i].join() == data[j].join()) {
dupes = true;
sourceSheet.getRange(i+1,1,1,numCols).setBackground("crimson");
sourceSheet.getRange(j+1,1,1,numCols).setBackground("crimson");
}
}
}
ss.deleteSheet(newSheet);
if (dupes) {
Browser.msgBox("Possible duplicate(s) found. Please check for repeat attendees.");
} else {
Browser.msgBox("No duplicates found.");
}
};
我希望能够在手动删除行并让它反映工作表的更新性质后再次运行脚本。
【问题讨论】:
标签: javascript google-apps-script google-sheets duplicates rows