如何从Google Sheets用户信息弹窗提取Google User ID?
提取Gmail地址对应的Google User ID到Google表格
直接通过浏览器开发者工具抓取弹窗的data-person-id不可行——这个弹窗是动态渲染的临时元素,无法通过脚本稳定捕获,且Google Sheets的前端交互逻辑不支持这种批量提取方式。推荐使用Google Apps Script + People API的方案,这是官方支持的稳定方法:
步骤1:启用People API
- 打开你的Google表格,点击菜单栏「扩展程序」→「Apps 脚本」,进入脚本编辑器。
- 在脚本编辑器中,点击「服务」→「添加服务」,找到「People API」并启用。
- 同时需要在Google Cloud平台确认API已启用:在脚本编辑器的「项目设置」里复制项目ID,打开Google Cloud平台搜索该项目,在「API和服务」→「库」中找到「People API」并启用。
步骤2:编写并运行脚本
将以下代码粘贴到脚本编辑器中,保存并运行:
function getGoogleUserIDs() { const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); // 假设第一列是邮箱(A列),第一行是表头,从第二行开始读取数据 const emailRange = sheet.getRange(2, 1, sheet.getLastRow() - 1, 1); const emails = emailRange.getValues(); const output = []; for (const [email] of emails) { if (!email) { output.push(['']); continue; } try { // 通过邮箱获取用户元数据,提取User ID const person = People.People.get(`people/${email}`, { personFields: 'metadata' }); const userId = person.metadata.sources[0].id; output.push([userId]); // 避免触发API配额限制,每请求后延迟1秒 Utilities.sleep(1000); } catch (error) { output.push(['获取失败:' + error.message]); } } // 将结果写入第二列(B列) sheet.getRange(2, 2, output.length, 1).setValues(output); }
注意事项
- 授权说明:第一次运行脚本时,会弹出权限请求窗口,需要授予脚本访问你的Google表格和People API的权限(需通过「高级」→「前往XXX(不安全)」完成授权,这是自定义脚本的正常流程)。
- API配额:People API有每日调用配额(默认是1000次/天),如果你的邮箱数量较多,可适当调整
Utilities.sleep()的延迟时间,或者分批次运行脚本。 - 权限限制:只能获取你有权访问的用户ID(比如同域内的用户,或已公开信息的外部用户),如果获取失败,会在对应单元格显示错误信息。
- 合规性:确保提取用户ID的行为符合Google服务条款及相关隐私法规。
内容的提问来源于stack exchange,提问作者colcc
相关产品推荐
相关产品推荐

