绑定表单的onFormSubmit脚本无法复制重命名表格求助
问题分析与修正方案
核心错误点
1. 事件对象调用错误(第一个失效脚本)
表单提交触发器的事件参数e中,当前提交的响应数据需通过e.response.getItemResponses()获取,而非e.getResponses()。此外,字段索引从0开始,需与你的表单实际字段顺序严格对应,你之前使用的[1]、[2]等索引可能对应错误的字段。
2. 错误获取历史响应(第二个尝试脚本)
form.getResponses()会返回表单的所有历史提交记录,取formResponses[1]得到的是第二条历史提交数据,并非触发脚本的当前提交内容,完全不符合需求。
修正后的脚本
function onFormSubmit(e) { // 获取当前提交的所有字段响应列表 const itemResponses = e.response.getItemResponses(); // 按表单实际字段顺序取值(索引从0开始,需根据你的表单调整) const teacherEmail = itemResponses[0].getResponse(); // 示例:第1个字段是邮箱 const teacherLastName = itemResponses[1].getResponse(); // 示例:第2个字段是姓氏 const teacherFirstName = itemResponses[2].getResponse(); // 示例:第3个字段是名字 const teacherNum = itemResponses[3].getResponse(); // 示例:第4个字段是教师编号 const teacherFullName = teacherLastName + teacherFirstName; // 复制并重命名文件 const targetFolder = DriveApp.getFolderById('1ARnOku-h49TAZytmEGSnckAKaoMZqffQ'); const sourceFile = DriveApp.getFileById('1_uHtcG-qLEeETGNbhRA4WNwQYcaltXbAtxgupYQNWLY'); sourceFile.makeCopy(`${teacherFullName}-Registration-FallFestival`, targetFolder); }
关键注意事项
- 确认触发器绑定:确保你的
onFormSubmit函数已绑定到表单(或关联表格)的On form submit触发器,函数名与触发器绑定的名称完全一致。 - 核对字段索引:在Apps Script编辑器中添加
console.log(itemResponses),执行测试提交后查看日志,确认每个字段的索引与代码中的取值对应。 - 权限验证:确保脚本拥有Drive和表单的访问权限(首次运行时会提示授权)。
内容的提问来源于stack exchange,提问作者Kevin Guess
相关产品推荐
相关产品推荐

