如何根据Google Form输入值将上传文件保存到对应命名文件夹
功能实现方案
通过Google Form关联的响应表格搭配Google Apps Script即可实现需求,无需借助第三方工具。
具体操作步骤
- 打开和你的Google Form绑定的响应Google Sheet,点击顶部菜单栏的「扩展程序」->「Apps 脚本」,进入脚本编辑页,删除编辑框内默认的空白代码。
- 将以下代码粘贴到编辑框中,按照注释修改开头的3个配置项为你自己的实际内容:
// 请修改以下3个配置项 const ROOT_FOLDER_ID = "你的根文件夹ID"; // 打开用于存储所有BL文件夹的父文件夹,浏览器地址栏folder/d/后的字符串即为ID const BL_FIELD_NAME = "BL number"; // 需和表单内BL number的问题名称完全一致,大小写匹配 const UPLOAD_FIELD_NAME = "文件上传"; // 需和表单内文件上传的问题名称完全一致,大小写匹配 function onFormSubmit(e) { // 读取表单提交的字段值 const response = e.namedValues; const blNumber = response[BL_FIELD_NAME][0].trim(); const uploadedFiles = response[UPLOAD_FIELD_NAME][0].split(", "); // 打开指定的根文件夹 const rootFolder = DriveApp.getFolderById(ROOT_FOLDER_ID); // 匹配对应BL号的文件夹,不存在则新建 let blFolder; const matchedFolders = rootFolder.getFoldersByName(blNumber); blFolder = matchedFolders.hasNext() ? matchedFolders.next() : rootFolder.createFolder(blNumber); // 复制上传文件到对应BL文件夹 uploadedFiles.forEach(fileUrl => { const fileId = fileUrl.split("id=")[1]; const sourceFile = DriveApp.getFileById(fileId); sourceFile.makeCopy(sourceFile.getName(), blFolder); // 若不需要保留表单默认上传位置的源文件,可取消下一行注释 // DriveApp.removeFile(sourceFile); }) }
- 配置提交触发器:点击脚本编辑器左侧的「触发器」(闹钟形状图标),点击右下角「添加触发器」,按以下规则配置:
- 选择要运行的函数:
onFormSubmit - 选择部署项:
Head - 选择事件来源:
来自电子表格 - 选择事件类型:
表单提交时
配置完成后点击保存,按照页面提示完成脚本权限授权即可。
- 选择要运行的函数:
- 功能测试:填写一次测试表单提交,填写任意BL号并上传测试文件,前往你设置的根文件夹下,确认是否生成了对应BL号的文件夹且文件夹内包含你上传的测试文件。
注意事项
- 若出现重复BL号的提交,后续上传的同BL号文件会直接存入已有的对应文件夹,不会重复新建文件夹
- 首次授权脚本时如果弹出「Google未验证应用」提示,点击「高级」->「继续访问」即可,脚本为你自行编写,无安全风险
- 若脚本运行报错,优先检查配置的字段名是否和表单内的问题名称完全一致,以及根文件夹ID是否填写正确、你对该文件夹是否有编辑权限
内容的提问来源于stack exchange,提问作者Nature
相关产品推荐
相关产品推荐

