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

Google表单提交后按国家迁移视频至Drive对应文件夹报错排查

代码问题分析与修复方案

你的代码主要存在以下几个核心问题,对应修复方案如下:

1. 表单字段名称不匹配

e.namedValues['COUNTRY'][0]和e.namedValues['VIDEO UPLOAD'][0]中的字段名称必须和Google表单里的实际字段标题完全一致(包括大小写、空格、标点符号)。如果表单里的国家字段是中文“国家”而非“COUNTRY”,或者视频上传字段是“视频上传”而非“VIDEO UPLOAD”,会直接导致无法获取对应值,触发Cannot read property '0' of undefined或文件夹ID为undefined的错误。

修复:打开你的Google表单,复制字段的准确标题,替换代码中对应的字符串。例如国家字段是中文则改为e.namedValues['国家'][0]。

2. 文件ID提取逻辑失效

Google表单上传文件的链接格式已更新,当前多为https://drive.google.com/file/d/[文件ID]/view结构,原代码用split('id=')[1]无法正确提取ID,会导致DriveApp.getFileById()报错。

修复:改用正则表达式提取文件ID,替换原文件ID提取代码:

// 替换原file_id提取行
var file_url = e.namedValues['VIDEO UPLOAD'][0];
var file_id = file_url.match(/[-\w]{25,}/)[0]; // 匹配Drive文件ID的通用正则

3. 缺乏异常容错处理

若用户未选择国家、未上传视频,或字段值格式异常,代码会直接终止报错,没有容错机制。

修复:添加基础异常判断,避免脚本崩溃:

function move_file_to_folder(e) {
  // 验证必要字段是否存在
  var country = e.namedValues['COUNTRY']?.[0];
  var file_url = e.namedValues['VIDEO UPLOAD']?.[0];
  
  if (!country || !file_url) {
    console.log('缺少必填字段:国家或视频链接');
    return;
  }

  var folder_id = folders[country];
  if (!folder_id) {
    console.log('未找到对应国家的文件夹:' + country);
    return;
  }

  // 提取文件ID
  var file_id_match = file_url.match(/[-\w]{25,}/);
  if (!file_id_match) {
    console.log('无法从链接中提取文件ID:' + file_url);
    return;
  }
  var file_id = file_id_match[0];

  // 移动文件并捕获错误
  try {
    DriveApp.getFileById(file_id).moveTo(DriveApp.getFolderById(folder_id));
  } catch (err) {
    console.log('文件移动失败:' + err.message);
  }
}

4. 文件夹名称匹配不一致

folders对象的键(如'USA')必须和表单中用户选择的国家选项完全一致,包括大小写、空格和符号。例如表单选项是“U.S.A”而非“USA”,会找不到对应的文件夹ID。

修复:要么统一表单选项与folders对象的键,要么转换大小写后匹配:

var folder_id = folders[country.toUpperCase()]; // 表单选项为小写时,转大写匹配

5. 触发器权限与关联问题

运行install_OnFormSubmitTrigger()时,需确保你有足够权限,且触发器关联的是正确的表格。此外,触发器的运行权限属于安装者,需确保安装者对目标文件夹和上传文件有编辑权限。

修复:重新运行install_OnFormSubmitTrigger()并完成授权;检查目标文件夹的共享权限,确保脚本运行账号可访问。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 15:23:39