下面的代码很棒,可以删除重复项,但有一件事我想更改,例如,如果我有 A 列并且它包含重复值而 B 列包含唯一值,在这种情况下该函数不会删除重复项来自 A 列,因为它如何将 A 列和 B 列连接在一起,然后删除重复项。
我需要的是删除基于 A 列的重复项,无论 B 列是否为唯一值
这是一个带有虚拟数据的样本表 https://docs.google.com/spreadsheets/d/13ViFiwoA_29oo-nz2LUK3CD7DiRqDRTW1blJRE6XHm4/edit?usp=sharing
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.join() == newData[j].join()) {
duplicate = true;
}
}
if (!duplicate) {
newData.push(row);
}
}
sheet.clearContents();
sheet.getRange(1, 1, newData.length, newData[0].length).setValues(newData);
}
最佳答案
您想删除重复的行。
- 作为示例,您希望实现以下目标。
来自
aa 123 bb 12345 cc 1235 dd 167 aa 1234 <--- You want to delete this row bb 12 <--- You want to delete this row ff 89
致
aa 123 bb 12345 cc 1235 dd 167 ff 89
如果我的理解是正确的,那么使用removeDuplicates()
怎么样?这个方法是2019年7月26日添加的。我想使用这个方法,你的脚本会变得更简单。请将此视为几个答案之一。
修改后的脚本 1:
function removeDuplicates() {
var sheet = SpreadsheetApp.getActiveSheet();
var range = sheet.getRange(1, 1, sheet.getLastRow(), 2); // Column A and B
range.removeDuplicates([1]);
}
修改脚本2:
如果你的脚本被修改了,下面的修改怎么样?
从:if (row.join() == newData[j].join()) {
到:
if (row[0] == newData[j][0]) {
引用:
如果我误解了您的问题并且这不是您想要的结果,我深表歉意。
关于javascript - Google 应用程序脚本根据一列删除重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57350409/