我们有一个删除重复项的函数,可以删除以前重复的行,即,如果 B1 和 B2 与第 1 行的 A1 和 A2 相同,则删除包含 B1 和 B2 的第 2 行。但我们希望它是这样的,仅当 B2 与 A2 相同时才删除第 2 行。这是我们到目前为止的代码:
function removeDuplicates() {
const startTime = new Date();
const newData = [];
const sheet = SpreadsheetApp.getActiveSheet();
const data = sheet.getDataRange().getValues();
const numRows = data.length;
const seen = {};
for (var i = 0, row, key; i < numRows && (row = data[i]); i++) {
key = JSON.stringify(row);
if (key in seen) {
continue;
}
seen[key] = true;
newData.push(row);
};
该函数应该只影响后面的行而不影响前面的行(即应该删除第 2 行,而不是第 1 行)。
最佳答案
也许您可以尝试不同的方法,例如在电子表格上应用公式,如 =UNIQUE(Sheet1!B:B)
并将结果复制到新工作表。这也应该可以通过编程方式实现。另见:
- https://zapier.com/blog/remove-duplicates-google-sheets/
- How do I add formulas to Google Sheets using Google Apps Script?
编辑:我认为您需要的内容已在 Google 开发者教程中进行了描述。 https://developers.google.com/apps-script/articles/removing_duplicates 参见“变体”部分。我对此进行了调整以匹配第二列中的重复项。我已经使用示例电子表格对此进行了测试。
function removeDuplicates() {
var sheet = SpreadsheetApp.getActiveSheet();
var data = sheet.getDataRange().getValues();
var newData = [];
for (var i in data) {
var row = data[i];
var duplicate = false;
for (var j in newData) {
if(row[1] == newData[j][1]){
duplicate = true;
}
}
if (!duplicate) {
newData.push(row);
}
}
sheet.clearContents();
sheet.getRange(1, 1, newData.length, newData[0].length).setValues(newData);
}
关于javascript - 删除包含重复单元格的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55267525/