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

onFormSubmit无法获取表单响应:e对象缺失values属性排查

问题

使用Google Apps Script的onFormSubmit(e)触发器获取表单响应时,返回的事件对象为{"authMode":"FULL","response":{},"source":{},"triggerUid":"604XXXXX"},完全缺失values和namedValues属性。怀疑是OAuth权限范围不足,但不确定具体缺少哪一项。

当前代码:

function onFormSubmit(e) {
    Logger.log(JSON.stringify(e));
    Logger.log('Named Values: ' + JSON.stringify(e.namedValues));

    var URL = e.namedValues['URL'] ? e.namedValues['URL'][0] : null;
}

已配置的OAuth权限:

"oauthScopes": [
    "https://www.googleapis.com/auth/forms",
    "https://www.googleapis.com/auth/script.external_request"
]

需求:获取包含有效e.values(或等价响应数据)的事件对象。

解决办法
  1. 确认触发器绑定对象
    • 若触发器绑定在表单关联的Google表格上,事件对象会自带values/namedValues;但如果绑定在表单本身,响应数据会存在e.response中,且需要对应权限才能读取。
  2. 补充必要权限范围
    • 必须添加https://www.googleapis.com/auth/forms.currentonly权限(该权限专门用于读取当前绑定表单的响应数据,比宽泛的forms权限更适配场景)。更新后的权限配置:
    "oauthScopes": [
        "https://www.googleapis.com/auth/forms",
        "https://www.googleapis.com/auth/forms.currentonly",
        "https://www.googleapis.com/auth/script.external_request"
    ]
    
  3. 重新授权脚本
    • 修改权限后,打开脚本编辑器执行任意函数,按照提示完成OAuth授权流程,确保新权限被正确授予。
  4. 调整代码适配表单触发器的事件结构
    • 表单触发器的响应数据存储在e.response中,需通过getItemResponses()方法获取,不能直接使用e.values:
    function onFormSubmit(e) {
        // 获取所有响应值数组,顺序与表单问题对应
        var allValues = e.response.getItemResponses().map(itemResp => itemResp.getResponse());
        Logger.log('All Response Values: ' + JSON.stringify(allValues));
        
        // 根据问题标题获取指定的URL响应
        var urlItemResp = e.response.getItemResponses().find(itemResp => {
            return itemResp.getItem().getTitle() === 'URL';
        });
        var urlValue = urlItemResp ? urlItemResp.getResponse() : null;
        Logger.log('URL Value: ' + urlValue);
    }
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 13:33:14