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

调用Google Form API无法获取表单响应中受访者邮箱的问题

Google Forms API 返回 respondentEmail 为 undefined 的排查方案
  • 第一优先级检查表单后台配置
    这个字段返回的前提是表单本身开启了邮箱收集规则:打开对应表单的设置页,找到响应收集板块,必须勾选「收集受访者邮箱地址」选项;如果开启了「仅组织内用户可填写+自动记录身份」也会自动收集邮箱。默认新建的表单是关闭邮箱收集的,这种情况下不管API怎么调,都不会返回该字段。
  • 检查API调用的权限范围
    你使用的OAuth凭证必须挂载响应读取权限,最低需要forms.responses.readonly权限,如果只申请了表单元数据读取、表单编辑但没开响应读取的权限,接口会自动隐去邮箱这类敏感的用户信息字段。
  • 检查是否误配置字段掩码
    调用接口时如果传了fields参数做返回字段过滤,必须手动把respondentEmail加到字段列表里,比如你只写了fields: "responses(answers,createTime)",那不在列表里的邮箱字段就会被直接过滤掉,返回体里自然找不到。如果不需要裁剪返回字段,不要传这个参数即可拿到全量返回。
  • 检查对应响应的提交场景
    如果某条响应是匿名提交的、或者提交时用户选择了不关联自己的邮箱账号,哪怕表单开了收集邮箱,该条响应的respondentEmail也不会有值;如果是你通过API手动创建的测试响应,没有主动传入respondentEmail参数的话,这个字段也不会自动生成。
  • 检查SDK版本
    如果你用的是Node.js官方的@googleapis/forms SDK,版本低于1.0.2的旧版本存在字段序列化bug,会漏掉顶层的respondentEmail字段,升级到最新稳定版即可修复。

配置正确的最小调用示例:

const { google } = require('googleapis');
// 提前初始化好带对应权限的OAuth2客户端
const formsClient = google.forms({ version: 'v1', auth: oauth2Client });

async function fetchResponse(formId, responseId) {
  const { data } = await formsClient.forms.responses.get({
    formId,
    responseId
    // 无特殊需求不要传fields参数
  });
  console.log('受访者邮箱:', data.respondentEmail);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 17:16:17