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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 03:47:35