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

如何利用Google表单提交字段自动重命名上传文件

Google表单自动重命名上传文件解决方案(非盈利住房费用记录场景)

针对用于记录非盈利住房费用的Google基础表单,需求为提交表单时自动用表单字段重命名上传文件,同时移除Google默认添加的“- 上传者姓名”后缀。

表单字段说明:

  • submissionDate:日期选择器
  • personName:姓名下拉框
  • expenseType:费用类型下拉框(如food、supplies等)
  • expenseAmount:数字字段(格式多为##.##)

目标文件名格式:submissionDate(YYYYMMDD)_personName_expenseType_expenseAmount

用户曾找到手动批量重命名方案,但需要实现自动处理,最初尝试的代码存在字段获取逻辑缺失问题,最终基于@Tedinoz的方案修改得到可用代码,需配合安装表单提交触发器使用。


初始不完整代码(存在逻辑缺失)

function onFormSubmit(e) {
    var form=FormApp.getActiveForm();
    // 返回表单提交总数
    var length=form.getResponses().length;
    // 将QUESTION NUMBER替换为文件上传问题的索引(注意第一个问题索引为0)
    var id=form.getResponses()[length-1].getItemResponses()[QUESTION NUMBER].getResponse();
    // getResponses()[length-1]获取最新的表单提交,因为索引从0开始,最后一条的索引是length-1
    var file=DriveApp.getFileById(id);
    // 存储文件名到变量
    name = file.getName();
    // 移除Google自动添加的名称后缀
    var originalname = name.split(' - ')[0]
    // !! 缺失部分:获取特定字段的响应,包括将日期选择器转换为YYYYMMDD格式
    var newname = datefield+namefield+typefield+originalname
    file.setName(name);
}

最终可用解决方案代码

function updateFileName(e) {
  Logger.log(JSON.stringify(e)) // 调试日志

  var values = e.values
  // 获取文件详情
  var fileURL = values[5]
  Logger.log("DEBUG: 文件链接 = "+fileURL)
  var id = fileURL.split("=")[1]
  Logger.log("DEBUG: 文件ID = "+id)
  var file = DriveApp.getFileById(id)
  var uploadFileName = file.getName()
  Logger.log("DEBUG: 当前文件名 = "+uploadFileName)
  var extension = uploadFileName.split('.').pop();

  // 获取文件名所需变量
  var submittedDate = values[2].toString()
  var yyyy = submittedDate.split("/")[2]
  var mm = submittedDate.split("/")[0]
  // 确保月份为两位数字(补前导零)
  if (mm.length == 1){
    mm = "0"+mm 
  } 
  var dd = submittedDate.split("/")[1]
  // 确保日期为两位数字(补前导零)
  if (dd.length == 1){
    dd = "0"+dd 
  } 
  var personName = values[1]
  var expenseType = values[3]
  var expenseAmount = values[6]

  // 替换字符串,确保文件名符合规范
  var expenseAmount = expenseAmount.replace('.', 'd').replace(',', 'd').replace('$', '');
  var expenseType = expenseType.replace('&','And').replace(' ','');
  
  var newName = yyyy+mm+dd+"_"+personName+"_"+expenseType+"_"+expenseAmount+"."+extension
  Logger.log("DEBUG: 新文件名 = "+newName)

  // 保存新文件名
  file.setName(newName)

  // 以下代码用于确认文件名修改(可选保留)
  
  var newfile = DriveApp.getFileById(id)
  var revisedFileName = file.getName()
  Logger.log("DEBUG: 更新后的文件名 = "+revisedFileName)
  
}

触发器安装步骤

  1. 打开表单关联的Google表格,进入脚本编辑器
  2. 在编辑器左侧面板找到「触发器」选项
  3. 创建新触发器:选择updateFileName函数,触发事件设置为「表单提交」

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 19:16:24