谷歌应用程序脚本根据一列删除重复项

2 javascript google-sheets google-apps-script

下面的代码非常棒,可以删除重复项,但是我想更改一件事,例如,如果我有 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);
}
Run Code Online (Sandbox Code Playgroud)

Tan*_*ike 7

如果我的理解是正确的,那么使用怎么样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]);
}
Run Code Online (Sandbox Code Playgroud)

修改后的脚本2:

如果你的脚本修改了,下面的修改怎么样?

从:
if (row.join() == newData[j].join()) {
Run Code Online (Sandbox Code Playgroud) 到:
if (row[0] == newData[j][0]) {
Run Code Online (Sandbox Code Playgroud)

参考:

如果我误解了你的问题并且这不是你想要的结果,我深表歉意。