javascript - Google 应用程序脚本根据一列删除重复项

标签 javascript google-apps-script google-sheets

下面的代码很棒,可以删除重复项,但有一件事我想更改,例如,如果我有 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/

相关文章:

javascript - 类的单选按钮单击了jquery

javascript - jQuery 时钟在 jsf 1.2 中不工作

javascript - 如何删除字符串中重复的空格?

javascript - GAS HTMLService : Pushing variables with createTemplateFromFile in file included in template

javascript - Google 脚本过滤一个值的范围

google-apps-script - 从 Google 表格导出图像

javascript - angularjs调用对象并返回值

javascript - 仅通过电子表格最后一行运行 Google 脚本?

javascript - 使用 Google Apps 脚本在不通知用户的情况下共享云端硬盘文档

arrays - 如果 B 列不为空,Google 表格会自动递增 A 列