如何从全名获取邮箱?Google Sheet批量处理人名的脚本方案
嘿,这个批量获取邮箱的需求我之前帮团队解决过,给你两个在Google Sheets里能用的靠谱方案,看你情况选就行!
方案1:基于统一邮箱命名规则批量生成(适合有固定命名规范的团队)
如果你们公司的邮箱有统一的命名逻辑(比如名.姓@公司域名.com、姓全拼@公司域名.com这种),写个自定义函数就能一秒批量生成,步骤超简单:
- 打开你的Google Sheet,点顶部菜单栏的扩展程序 > Apps Script,进入脚本编辑器。
- 删掉默认的
myFunction,粘贴下面的代码(记得根据你们的实际规则修改注释里的选项):
function GETEMAIL(fullName, domain) { // 拆分全名(这里默认是"姓 名"用空格分隔的格式,要是你们是别的分隔符改这里就行) const nameParts = fullName.split(' '); if (nameParts.length < 2) { return "格式不对哦:请确保全名是姓和名分开的(比如\"张三\"写成\"张 三\")"; } const lastName = nameParts[0].toLowerCase(); const firstName = nameParts[1].toLowerCase(); // 选一个你们公司的邮箱规则,把对应的行取消注释就行: // 1. 名.姓@domain.com → 比如"张 三"生成san.zhang@xxx.com // return `${firstName}.${lastName}@${domain}`; // 2. 姓.名@domain.com → 比如"张 三"生成zhang.san@xxx.com // return `${lastName}.${firstName}@${domain}`; // 3. 名首字母+姓@domain.com → 比如"张 三"生成szhang@xxx.com return `${firstName.charAt(0)}${lastName}@${domain}`; }
- 给项目起个名字(比如"Email批量生成器")保存,回到Sheet里,在要出邮箱的单元格输入
=GETEMAIL(A2, "yourcompany.com")(A2是存全名的单元格,第二个参数填你们公司的域名),下拉就能批量生成了!
方案2:调用Google Workspace Admin SDK精准获取域内用户邮箱(适合G Suite/Workspace管理员)
如果你们用的是Google Workspace(原G Suite),而且你是域管理员,那可以直接调用官方API查域内用户的真实邮箱,不用靠规则猜,精准度拉满:
- 还是打开Apps Script编辑器,先启用Admin SDK服务:
- 点左侧的服务图标(那个拼图样的),找到Admin Directory API,点添加。
- 粘贴下面的脚本:
function GETDOMAINEMAIL(fullName) { try { // 搜索域内和全名匹配的用户,只取第一个结果 const users = AdminDirectory.Users.list({ query: `name.fullName='${fullName}'`, maxResults: 1 }); if (users.users && users.users.length > 0) { return users.users[0].primaryEmail; } else { return "没找到匹配的邮箱哦"; } } catch (e) { return "权限不足或查询出错:" + e.message; } }
- 保存后先运行一次函数(点编辑器顶部的运行按钮),会弹出授权提示,跟着步骤用管理员账号授权就行。
- 回到Sheet,输入
=GETDOMAINEMAIL(A2),下拉就能批量拿到精准的域内用户邮箱了。
小提醒
- 方案1的前提是有统一命名规则,如果你们公司邮箱规则乱七八糟,可能会有错误,得人工核对几个关键结果。
- 方案2必须是Workspace域管理员才能用,普通用户没权限调用这个API。
- 如果是外部联系人(不是你们域内的),Google Sheets没有直接的内置函数能查,这时候可能得先把联系人导入Google Contacts,再用VLOOKUP或者脚本匹配,但操作起来麻烦点,优先用上面俩方案哈。
内容的提问来源于stack exchange,提问作者TheOneWhoMightKnow
相关产品推荐
相关产品推荐

