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

请求编写Google Sheets脚本:按Primary Case聚合去重Number IDs

解决方案:用Google Apps Script自动整理Salesforce数据

当然可以实现!我给你准备了一个专门适配你需求的Google Apps Script,能自动把「Input」表中的Primary case和对应的全部唯一Number IDs整理到「Output」表,完全不需要手动操作。

操作步骤

1. 打开脚本编辑器

打开你的目标Google表格,点击顶部菜单栏的「扩展程序」→「Apps Script」,就能进入脚本编辑器界面了。

2. 粘贴脚本代码

把编辑器里默认的myFunction()代码删掉,粘贴下面的完整代码:

function processSalesforceData() {
  // 获取表格对象
  const spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  // 获取Input和Output工作表
  const inputSheet = spreadsheet.getSheetByName("Input");
  const outputSheet = spreadsheet.getSheetByName("Output");
  
  if (!inputSheet || !outputSheet) {
    SpreadsheetApp.getUi().alert("请确保存在名为「Input」和「Output」的工作表!");
    return;
  }
  
  // 获取Input表的所有数据(假设表头在第1行,数据从第2行开始)
  const inputData = inputSheet.getDataRange().getValues();
  const startRow = 1; // 表头行索引,数据从startRow+1开始
  const primaryCaseCol = 0; // A列,索引从0开始
  const numberIdsCol = 2; // C列
  
  // 用对象存储每个Primary case对应的唯一Number IDs(Set自动去重)
  const primaryCaseMap = new Map();
  
  // 遍历Input表的数据行
  for (let i = startRow + 1; i < inputData.length; i++) {
    const primaryCase = inputData[i][primaryCaseCol];
    const numberIdsStr = inputData[i][numberIdsCol];
    
    // 跳过空的Primary case或Number IDs行
    if (!primaryCase || !numberIdsStr) continue;
    
    // 处理Number IDs字符串:去掉开头的[,按逗号分割,去除每个ID的空格
    const ids = numberIdsStr.replace(/^\[/, "").split(",").map(id => id.trim());
    
    // 如果当前Primary case还没在Map里,新建一个Set
    if (!primaryCaseMap.has(primaryCase)) {
      primaryCaseMap.set(primaryCase, new Set());
    }
    
    // 把所有ID加入Set(自动去重)
    ids.forEach(id => {
      if (id) primaryCaseMap.get(primaryCase).add(id);
    });
  }
  
  // 准备写入Output表的数据:把Set转为逗号分隔的字符串
  const outputData = [];
  // 可以根据需要修改表头内容
  outputData.push(["Primary case", "Unique Number IDs"]);
  
  primaryCaseMap.forEach((idsSet, primaryCase) => {
    outputData.push([primaryCase, Array.from(idsSet).join(", ")]);
  });
  
  // 清空Output表现有数据(保留表头的话就从第2行开始清空)
  outputSheet.clearContents();
  // 写入整理后的数据
  outputSheet.getRange(1, 1, outputData.length, outputData[0].length).setValues(outputData);
  
  SpreadsheetApp.getUi().alert("数据整理完成!");
}

3. 运行脚本并授权

点击编辑器顶部的运行按钮(▶️),第一次运行会弹出授权提示,按照页面指引完成授权即可(放心,这个脚本只会访问你当前的表格数据)。

4. 可选:设置自动同步(定时触发)

如果需要定期自动更新数据,比如每天同步一次,可以设置定时触发:

  • 点击脚本编辑器左侧的「触发器」图标(闹钟形状)
  • 点击「添加触发器」
  • 选择要运行的函数为processSalesforceData,事件源选择「时间驱动」,然后设置你需要的频率(比如每天、每小时)

关键逻辑说明

  • 用Map+Set组合实现自动去重:Map存储每个Primary case对应的ID集合,Set自动过滤重复的Number IDs,保证最终结果唯一。
  • 专门处理了Number IDs的格式:去掉开头的[,按逗号分割后去除每个ID的前后空格,避免因为空格导致的重复。
  • 兼容空行:如果Input表中有空的Primary case或Number IDs行,会自动跳过,不影响结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 16:17:36