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

如何在Google Sheets中对字符串进行分组聚合?

在Google Sheets中合并共享驱动器成员邮箱的方法

方法一:公式组合快速实现

假设你的原始数据在名为Sheet1的工作表里,列依次是id、name、createdTime、emailAddress:

  1. 提取唯一驱动器记录
    新建一个工作表,在A2单元格输入:
    =UNIQUE(Sheet1!A:C)
    这会自动生成所有不重复的共享驱动器条目,每个驱动器只出现一次。

  2. 拼接对应成员邮箱
    在D2单元格输入:
    =TEXTJOIN(", ", TRUE, FILTER(Sheet1!D:D, Sheet1!A:A=A2))

    • TEXTJOIN负责用逗号加空格把邮箱拼起来,TRUE表示跳过空值
    • FILTER会筛选出当前驱动器(A2是id)对应的所有成员邮箱
      下拉D列公式,所有驱动器的成员列表就自动生成了。

方法二:Apps Script批量处理(大数据量适用)

如果数据行数很多,公式运行慢,用脚本更高效:

  1. 打开表格,点「扩展程序」→「Apps Script」
  2. 删掉默认代码,粘贴下面的脚本:
function mergeDriveMembers() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const sourceSheet = ss.getSheetByName("Sheet1"); // 改成你的原始数据工作表名
  const targetSheet = ss.getSheetByName("合并结果") || ss.insertSheet("合并结果");
  
  const data = sourceSheet.getDataRange().getValues();
  const driveMap = new Map();
  
  // 按驱动器ID分组收集邮箱
  for (let i = 1; i < data.length; i++) {
    const [id, name, createdTime, email] = data[i];
    if (!driveMap.has(id)) {
      driveMap.set(id, {name, createdTime, emails: []});
    }
    if (email) driveMap.get(id).emails.push(email);
  }
  
  // 整理输出数据
  const output = [["id", "name", "createdTime", "成员邮箱"]];
  driveMap.forEach((info, id) => {
    output.push([id, info.name, info.createdTime, info.emails.join(", ")]);
  });
  
  // 写入结果
  targetSheet.clear();
  targetSheet.getRange(1, 1, output.length, output[0].length).setValues(output);
  SpreadsheetApp.getUi().alert("合并完成!");
}
  1. 把脚本里的"Sheet1"改成你实际的原始工作表名称
  2. 点运行按钮,授权后就能在「合并结果」工作表里看到处理好的数据

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 17:00:58