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

Google表单上传文件按选项移动到指定Drive子文件夹问题求助

解决Google表单上传文件到指定子文件夹的问题

核心问题分析

你的代码中parentFolder.getFoldersByName(answer).next()存在两个潜在问题:

  • 直接调用next()会在找不到对应名称的子文件夹时抛出异常,导致后续代码无法执行
  • 表单选项文本与Drive子文件夹名称可能存在不匹配(比如大小写、空格差异)

修正后的代码

const PARENT_FOLDER_ID = "<folder ID>"; // 替换为你的"reports"文件夹ID

const initialize = () => {
  const form = FormApp.getActiveForm();
  ScriptApp.newTrigger("onFormSubmit").forForm(form).onFormSubmit().create();
};

const onFormSubmit = ({ response } = {}) => {
  try {
    // 获取第一个问题的选项答案,去除前后空格避免匹配误差
    const answer = response.getItemResponses()[0].getResponse().trim();
  
    // 提取所有上传的文件ID
    const files = response
      .getItemResponses()
      .filter(itemResponse => itemResponse.getItem().getType() === FormApp.ItemType.FILE_UPLOAD)
      .map(itemResponse => itemResponse.getResponse())
      .reduce((a, b) => [...a, ...b], []);

    if (files.length === 0) return;

    const parentFolder = DriveApp.getFolderById(PARENT_FOLDER_ID);
    // 安全获取目标子文件夹,先判断是否存在
    const folderIterator = parentFolder.getFoldersByName(answer);
    if (!folderIterator.hasNext()) {
      Logger.log(`未找到名称为${answer}的子文件夹`);
      return;
    }
    const targetFolder = folderIterator.next();

    // 移动文件到目标文件夹,单个文件失败不影响其他文件
    files.forEach(fileId => {
      try {
        const file = DriveApp.getFileById(fileId);
        file.moveTo(targetFolder);
        Logger.log(`文件${file.getName()}已移动到${targetFolder.getName()}`);
      } catch (e) {
        Logger.log(`移动文件${fileId}失败: ${e.message}`);
      }
    });
  } catch (f) {
    Logger.log(`处理表单提交失败: ${f.message}`);
  }
};

关键优化点

  • 空格处理:用trim()去除答案前后的空格,避免因表单选项或输入的空格导致匹配失败
  • 安全遍历:先通过hasNext()判断目标文件夹是否存在,避免直接调用next()抛出异常中断流程
  • 细化日志:给文件移动和整体流程添加详细日志,方便后续排查问题
  • 类型判断优化:直接使用FormApp.ItemType.FILE_UPLOAD替代字符串转换,逻辑更可靠

额外检查项

  1. 确认PARENT_FOLDER_ID是你的"reports"文件夹ID,而非子文件夹ID
  2. 确保表单第一个问题的选项文本(如"1"、"2")与Drive中子文件夹的名称完全一致
  3. 运行initialize()函数创建表单提交触发器,确保脚本能监听表单提交事件

内容的提问来源于stack exchange,提问作者AshaneF

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 01:09:53