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

修改Google Apps Script实现整行判定的唯一数据追加功能

修改Google Apps Script实现整行数据去重同步

我需要实现一个函数,将Salesforce实时同步报表中的唯一数据粘贴到另一工作表。但目前代码仅通过第一列的值判定数据唯一性,需要修改为基于整行数据进行重复判定。

修改后的完整代码

function appending() {
  const ss = SpreadsheetApp.getActive();
  const source = ss.getRange('Sync!A3:K');
  const target = ss.getRange('Report!H3:R');
  appendUniquesToRange_(source, target);
}

function appendUniquesToRange_(sourceRange, targetRange) {
  const dataToAppend = sourceRange.getValues();
  const existingData = targetRange.getValues();
  
  // 合并现有数据和待追加数据,过滤整行重复项及空行
  const newData = existingData
    .concat(dataToAppend)
    .filter((row, rowIndex, array) => {
      // 将整行转为JSON字符串作为唯一标识,避免数组直接比较的问题
      const rowStr = JSON.stringify(row);
      // 只保留第一次出现的整行,同时过滤全空行
      return array.map(r => JSON.stringify(r)).indexOf(rowStr) === rowIndex && row.join('') !== '';
    });
  
  targetRange
    .clearContent()
    .offset(0, 0, newData.length, newData[0]?.length || 0)
    .setValues(newData);
}

关键改动说明

  • 把原代码中仅取第一列(tuple[0])作为唯一标识的逻辑,改成将整行数据转为JSON字符串(JSON.stringify(row)),这样只要整行内容完全一致,就会被判定为重复项。
  • 新增了row.join('') !== ''的判断,过滤掉全为空的行,避免无效数据被保留。
  • 优化了目标范围的列数处理(newData[0]?.length || 0),防止空数组导致的报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 07:23:17