javascript - 删除包含重复单元格的行

标签 javascript google-sheets

我们有一个删除重复项的函数,可以删除以前重复的行,即,如果 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) 并将结果复制到新工作表。这也应该可以通过编程方式实现。另见:

编辑:我认为您需要的内容已在 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/

相关文章:

javascript - Google 表格日历

javascript - 忽略某些元素的 ng-blur 事件

Javascript自动更新条件值

javascript - localstorage 数据可以放在 HTTP header 中吗?

google-sheets - 计算数组中所有值的总和大于另一个单元格中的值

javascript - Google Apps 脚本,从外部电子表格检索数据的最快方法

google-apps-script - Google Sheets 如何确保在使用按钮运行脚本之前完成字段更改

javascript - 使用长服务器端脚本加载网页的最佳实践

php - W3Schools 试用编辑器

javascript - 如果单元格包含值,则可以在 Google 表格中的数据验证中选中复选框