如何通过Google Script根据下拉选项重定向表单上传文件至对应文件夹
实现Google表单上传文件自动分类到对应文件夹(基于下拉选择)
当然可以!这是Google Apps Script最擅长的自动化场景之一,我之前帮好几个用户实现过类似需求,下面一步步教你怎么做:
第一步:准备表单与文件夹结构
- 确保你的Google Form里有两个核心组件:一个下拉选择题(选项比如
Meat、Fish,注意名称要精准),一个文件上传组件(允许用户上传文件) - 在Google Drive中创建好对应目标文件夹,命名要和下拉选项完全一致(包括大小写、空格,比如下拉选
Meat,文件夹就叫Meat)
第二步:编写表单触发脚本
- 打开你的Google Form,点击右上角的「⋮」菜单,选择「脚本编辑器」,进入Google Apps Script编辑界面
- 删除默认的
myFunction()代码,替换成下面的脚本(记得根据你的表单组件标题修改对应内容):
function onFormSubmit(e) { // 获取表单提交的响应数据 const response = e.response; const itemResponses = response.getItemResponses(); // 初始化分类和文件变量 let selectedCategory = ""; let uploadedFile = null; // 遍历所有表单响应,提取我们需要的信息 itemResponses.forEach(itemResp => { const itemTitle = itemResp.getItem().getTitle(); // 替换成你表单中下拉选择题的标题,比如"食材类型" if (itemTitle === "食材类型") { selectedCategory = itemResp.getResponse(); } // 替换成你表单中文件上传组件的标题,比如"上传食材凭证" if (itemTitle === "上传食材凭证") { const fileIds = itemResp.getResponse(); // 取第一个上传的文件(如需处理多个,可循环遍历fileIds) if (fileIds.length > 0) { uploadedFile = DriveApp.getFileById(fileIds[0]); } } }); // 当分类和文件都存在时,执行移动/复制操作 if (selectedCategory && uploadedFile) { try { // 根据分类名称查找目标文件夹 const targetFolder = DriveApp.getFoldersByName(selectedCategory).next(); // 方案1:复制文件到目标文件夹(原文件保留在表单默认文件夹) uploadedFile.makeCopy(uploadedFile.getName(), targetFolder); // 方案2:直接移动文件到目标文件夹(原文件会从默认文件夹移除) // uploadedFile.moveTo(targetFolder); // 可选:删除原文件(如果用了复制,想清理默认文件夹的话) // uploadedFile.setTrashed(true); } catch (err) { // 捕获找不到文件夹的异常,记录日志方便排查 console.log(`错误:未找到名为「${selectedCategory}」的文件夹,详情:${err}`); } } }
第三步:设置表单提交触发器
- 在脚本编辑器左侧,点击「触发器」图标(闹钟样式)
- 点击「添加触发器」,配置以下参数:
- 选择要运行的函数:
onFormSubmit - 选择部署来源:
从表单 - 选择事件类型:
表单提交
- 选择要运行的函数:
- 点击「保存」,按照提示完成脚本权限授权(浏览器提示“未验证应用”是正常的,点击「高级」→「转到你的脚本名称(不安全)」即可完成授权)
关键注意事项
- 下拉选项名称必须和Drive文件夹名称完全匹配,否则脚本会找不到目标文件夹
- 如果需要支持多文件上传,修改脚本中处理
fileIds的部分,循环遍历每个文件ID即可 - 脚本中的
makeCopy和moveTo二选一:复制会保留原文件,移动则是直接转移原文件 - 授权时的权限提示是Google的安全机制,因为这是你自己编写的脚本,放心授权即可
内容的提问来源于stack exchange,提问作者adka
相关产品推荐
相关产品推荐

