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

如何修改Google Apps Script函数,仅依据首列移除重复行?

修改方案:仅按第一列去重的表格行移除函数

原代码通过对比整行内容判断重复,要实现仅检查第一列值来移除重复行,只需做以下关键修改:

修改后的完整代码

function removerDuplicata() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var intervalo = sheet.getRange("A2:H")
  var data = intervalo.getValues();
  var novaData = new Array();
  // 用Set记录已出现的第一列值,提升去重效率
  var seenFirstColumn = new Set();
  for(i in data){
    var row = data[i];
    // 跳过第一列为空的行(可选,避免无效处理)
    if (!row[0]) continue;
    var duplicata = false;
    // 仅判断第一列值是否重复
    if (seenFirstColumn.has(row[0])) {
      duplicata = true;
    }
    if(!duplicata){
      novaData.push(row);
      seenFirstColumn.add(row[0]);
    }
  }
  intervalo.clearContent();
  sheet.getRange(2, 1, novaData.length, novaData[0].length).setValues(novaData);
}

具体修改说明

  • 替换重复判断逻辑:原代码用row.join() == novaData[j].join()对比整行内容,现在改为检查第一列值是否已存在于seenFirstColumn集合中,既精准匹配需求,又比嵌套循环效率更高。
  • 新增去重记录集合:添加seenFirstColumn变量(Set类型),存储已处理过的第一列值,避免重复遍历novaData数组,提升大数据量下的运行速度。
  • 可选优化:跳过空行:增加if (!row[0]) continue;,可直接跳过第一列无内容的行,减少无效处理。

如果要沿用原代码的嵌套循环逻辑,仅需修改判断条件即可:

// 原嵌套循环部分替换为:
for(j in novaData){
  // 仅对比第一列值
  if(row[0] == novaData[j][0]){
    duplicata = true;
  }
}

不过这种嵌套循环在数据量较大时效率偏低,更推荐使用Set的优化版本。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 10:35:41