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

Google Sheets去重脚本优化:基于邮箱列保留最新条目并忽略空值

优化Google Sheets去重脚本:忽略邮箱大小写、空值,避免误高亮

以下是优化后的完整脚本,解决了你的三个核心问题:忽略E列空值、邮箱大小写不敏感去重、避免新用户行被误高亮:

function onChange(e) {
  if (e.changeType == 'INSERT_ROW') {
    const sh = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
    // 精准定位插入的行,给首列添加日期
    const insertRow = e.range.getRow();
    sh.getRange(insertRow, 1).setValue(new Date());
  } 
}

function removeDuplicates() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const sh = ss.getSheetByName('Inzendingen');  
  const dt = sh.getDataRange().getValues();
  const seenEmails = new Set(); // 用Set提升重复查找效率
  const rowsToDelete = [];
  const rowsToHighlight = [];

  // 从下往上遍历,确保保留最新的行
  for (let i = dt.length - 1; i >= 0; i--) {
    const email = dt[i][4];
    // 跳过空邮箱或非字符串的行,不参与去重逻辑
    if (!email || typeof email !== 'string') {
      continue;
    }
    // 转小写+去首尾空格,消除大小写和空格导致的重复误判
    const normalizedEmail = email.toLowerCase().trim();
    
    if (seenEmails.has(normalizedEmail)) {
      // 标记要删除的旧重复行(行号=数组索引+1)
      rowsToDelete.push(i + 1);
    } else {
      seenEmails.add(normalizedEmail);
      // 仅当当前行的上方有重复行被标记删除时,才标记当前行需要高亮
      const hasDuplicateAbove = rowsToDelete.some(row => row === i);
      if (hasDuplicateAbove) {
        rowsToHighlight.push(i + 1);
      }
    }
  }

  // 批量删除行(从大到小删,避免行号偏移)
  if (rowsToDelete.length > 0) {
    rowsToDelete.sort((a, b) => b - a).forEach(row => {
      sh.deleteRow(row);
      Utilities.sleep(300); // 缩短等待时间,优化执行速度
    });
    // 高亮保留的最新有效行
    rowsToHighlight.forEach(row => {
      sh.getRange(row, 1, 1, sh.getLastColumn()).setBackground('lightblue');
    });
  }
}

关键修改说明

  • 忽略E列空值:通过if (!email || typeof email !== 'string')判断,直接跳过空邮箱或非字符串的行,不会把空值纳入去重逻辑,避免误触发删除和高亮
  • 邮箱大小写不敏感:将邮箱统一转为小写并去除首尾空格,确保Test@Example.com和test@example.com被判定为同一邮箱
  • 修正高亮逻辑:不再盲目高亮最后一行,仅当当前行确实替换了上方的旧重复行时,才标记高亮,彻底避免新用户行被误标
  • 性能优化:用Set替代数组indexOf提升重复查找效率,批量标记后统一删除行,减少不必要的等待时间

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 13:35:24