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

AppScript存储所有表单提交回复至单一文件时报getResponses非函数错误

AppScript 将表单回复同步到统一表格报错解决方案

报错原因

TypeError: id_form.getResponses is not a function 错误的核心诱因是 id_form 变量未获取到合法的 Google 表单实例,常见触发场景如下:

  • 调用 setDestination_responses 函数时传入的 form 参数不是有效表单对象,导致 form.getId() 取值异常,后续 FormApp.openById 执行失败
  • 当前操作账号对目标表单没有编辑权限,无法正常读取表单实例

修复后可用代码

直接将表单ID硬编码到逻辑中可避免传参错误导致的异常,代码如下:

function setDestination_responses() {
  // 替换为你自己的Google表单ID
  const id_form = FormApp.openById('替换为你的表单ID');
  // 目标存储表格ID
  const spreadsheet_responses = SpreadsheetApp.openById('1TX4GOsihKuXFhbZMhtFWPYmGwrxii0XhyGhyTKzPKhc');
  const sheet_spreadsheet_responses = spreadsheet_responses.getSheets()[0];
  
  const titles = id_form.getItems().map(e => e.getTitle());
  const formResponses = id_form.getResponses();
  const values = formResponses.map(f => f.getItemResponses().reduce((o, i) => {
    const r = i.getResponse();
    return Object.assign(o, {[i.getItem().getTitle()]: Array.isArray(r) ? r.join(",") : r});
  }, {})).map(o => titles.map(t => o[t] || ""));

  if (values.length === 0) {
    console.log(`VALUES EQUAL TO 0 ${values}`);
  } else {
    sheet_spreadsheet_responses.getRange(sheet_spreadsheet_responses.getLastRow() + 1, 1, values.length, values[0].length).setValues(values);
  }
}

注意事项

  • 首次运行代码需要按照提示完成表单、表格的读写权限授权
  • 确认代码中填写的表单ID、表格ID正确,且当前操作账号对两个文件都有编辑权限
  • 如果是用户提交表单后触发同步逻辑,建议绑定表单提交触发器,仅处理最新提交的单条回复,无需每次拉取全量历史回复,运行效率更高

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 23:15:06