请求编写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
相关产品推荐
相关产品推荐

