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

Google Apps Script表单提交触发脚本报错:TypeError无法读取values属性

修复Google表单触发脚本的"Cannot read properties of undefined (reading 'values')"错误

错误原因分析

  • 手动运行报错:该脚本为表单提交事件设计,手动运行时没有传入事件对象e,导致e为undefined,无法读取e.values。
  • 表单提交报错:大概率是表单字段结构变更(新增/删除问题、调整问题顺序),或是脚本权限/触发器异常,也可能是模板文件/文件夹的权限发生变化。

修复步骤

1. 解决手动调试问题

若需要手动测试,新增测试函数模拟表单提交事件:

// 手动调试用测试函数
function testPatientReport() {
  // 替换为表单关联的Google Sheet ID
  var sheet = SpreadsheetApp.openById("你的Sheet ID").getActiveSheet();
  var lastRow = sheet.getLastRow();
  // 读取最新一行数据(55为当前表单字段总数,按需调整)
  var values = sheet.getRange(lastRow, 1, 1, 55).getValues()[0];
  // 模拟表单提交事件对象
  var e = { values: values };
  // 调用原处理函数
  PatientResponsesFormReport(e);
}

2. 排查表单字段结构

  • 打开Google表单,通过「版本历史」对比9月13日前后的问题顺序
  • 表单提交的e.values严格按问题顺序排列,第一个值为时间戳(e.values[0]),若中间新增/删除问题,所有索引会偏移,导致读取错误。需重新核对每个e.values[index]对应的字段,修正索引值。

3. 检查触发器与权限

  • 打开脚本编辑器,点击左侧「触发器」图标,确认表单提交触发器存在,且触发事件为「表单提交」
  • 若触发器缺失,重新创建:选择函数PatientResponsesFormReport,事件源选「表单」,事件类型选「表单提交」
  • 重新授权脚本:点击「运行」,按提示完成权限授予(需使用拥有表单/文件操作权限的账号)

4. 验证模板与文件夹权限

  • 确认模板文件ID(1zsvcI6JwY_kdSCVs7w6gSh_VmwwtIe1E_Fm28b0GyvM)对应的Google Doc存在,且脚本运行账号有编辑权限
  • 确认目标文件夹ID(1j619jPkXGATxs99Uh6BbDu4e4lV0za_3)存在,且脚本运行账号有写入权限
  • 权限不足时,给对应文件/文件夹添加运行账号的编辑权限

5. 新增错误防护(可选)

在原函数开头添加判断,避免空值导致崩溃:

function PatientResponsesFormReport(e) {
  // 新增空值检查
  if (!e || !e.values) {
    console.error("事件对象或表单值为空,请通过表单提交触发");
    return;
  }
  // 原代码继续执行
  var timestamp = e.values[0];
  // ... 剩余代码
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 02:37:02