You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改Google Sheets去重代码,实现基于两列的重复项删除

修改Google Apps Script实现双列重复项删除

原代码仅针对“Receipt Number”列删除重复行,要实现同时匹配“Receipt Number”和“Mobile Number”两列重复才删除,可以按以下方式修改代码:

function removeDuplicates() {
  var ss = SpreadsheetApp.getActive();
  var sh = ss.getSheetByName("Records");
  var vA = sh.getDataRange().getValues();
  var hA = vA[0];
  var hObj = {};
  hA.forEach(function(e, i) { hObj[e] = i; }); // 建立表头到列索引的映射

  // 存储已出现过的「Receipt Number + Mobile Number」组合
  var uniquePairs = [];
  var deleteCount = 0;

  for (var i = 0; i < vA.length; i++) {
    // 获取当前行的两个关键列值
    var receiptNum = vA[i][hObj['Receipt Number']];
    var mobileNum = vA[i][hObj['Mobile Number']];
    // 用特殊字符(比如|)拼接两个值,避免不同组合被误判为重复
    var pairKey = receiptNum + "|" + mobileNum;

    if (uniquePairs.indexOf(pairKey) === -1) {
      // 组合未出现过,加入数组
      uniquePairs.push(pairKey);
    } else {
      // 组合已存在,删除当前行(注意删除行后后续行索引偏移,用deleteCount修正)
      sh.deleteRow(i + 1 - deleteCount);
      deleteCount++;
    }
  }
}

关键修改说明:

  • 把原代码中存储单个Receipt Number的数组,改成存储两列值的拼接字符串的数组,用|作为分隔符(可换成数据中不会出现的其他字符),确保不同组合不会被误判。
  • 循环中同时提取两列的值,拼接成唯一标识pairKey,以此判断是否重复。
  • 保留原有的删除行索引修正逻辑(deleteCount变量),避免因删除行导致后续行索引错位。

内容的提问来源于stack exchange,提问作者Miyer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 03:10:25