Google Forms脚本优化:仅在上传文件时创建对应物业ID文件夹
优化物业管理表单脚本:仅在有文件时创建物业文件夹
核心修改逻辑
先判断当前表单提交是否包含上传的文件,只有确认存在文件时,才执行文件夹的查找/创建以及文件移动操作,完全跳过无文件提交时的文件夹创建流程。
修改后的完整脚本示例
function onFormSubmit(e) { // 获取表单提交响应 const response = e.response; const itemResponses = response.getItemResponses(); // 1. 提取物业ID(请根据你的表单实际字段标题修改"物业ID") const propertyIdResp = itemResponses.find(resp => resp.getItem().getTitle() === "物业ID"); if (!propertyIdResp) return; const propertyId = propertyIdResp.getResponse(); // 2. 检查是否有上传的文件 const fileUploadResp = itemResponses.find(resp => resp.getItem().getType() === FormApp.ItemType.FILE_UPLOAD); let uploadedFiles = []; if (fileUploadResp) { uploadedFiles = fileUploadResp.getResponse(); // 返回文件对象数组 } // 无文件则直接退出,不创建文件夹 if (uploadedFiles.length === 0) return; // 3. 查找或创建对应物业ID的文件夹(默认使用表单关联的Drive文件夹作为根目录,可自行修改根文件夹ID) const formFolder = DriveApp.getFileById(response.getId()).getParents().next(); let propertyFolder = null; // 尝试查找已存在的文件夹 const folderIterator = formFolder.getFoldersByName(propertyId); if (folderIterator.hasNext()) { propertyFolder = folderIterator.next(); } else { // 文件夹不存在时创建 propertyFolder = formFolder.createFolder(propertyId); } // 4. 将上传的文件移动到目标文件夹 uploadedFiles.forEach(file => { const driveFile = DriveApp.getFileById(file.getId()); driveFile.moveTo(propertyFolder); }); }
关键代码说明
- 文件存在判断:通过
FormApp.ItemType.FILE_UPLOAD定位文件上传字段,获取其响应的文件数组,当数组长度为0时直接退出函数,彻底避免空文件夹生成。 - 物业ID提取:通过表单字段标题匹配获取物业ID,确保文件夹命名准确(务必替换成你表单中实际的物业ID字段标题)。
- 文件夹处理逻辑:仅在确认有文件后才执行查找/创建操作,完全跳过无文件时的无效操作。
- 文件移动:遍历所有上传文件,逐个移动到对应物业文件夹中。
额外注意事项
- 确保脚本的触发事件设置为表单提交触发(onFormSubmit),否则无法获取提交数据参数
e。 - 如果表单包含多个文件上传字段,可以调整代码遍历所有文件上传字段的响应,合并文件数组后再判断是否有文件。
内容的提问来源于stack exchange,提问作者Mike Davidson
相关产品推荐
相关产品推荐

