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

如何修改Google Apps脚本实现按输入命名文件并关联Google表格

解决你的Google Apps脚本修改需求:自定义文件名+关联Google表格

我来帮你一步步调整代码,搞定这两个核心需求:


1. 修改文件命名逻辑:按用户输入的名称命名

原来的代码是直接沿用文件的原始名称上传,我们要改成用用户输入的名称作为文件名,同时保留原文件的扩展名(避免文件格式丢失导致无法打开)。

修改后的App脚本(文件命名部分):

function doGet(e) {
  return HtmlService.createHtmlOutputFromFile('form.html');
}

function uploadFiles(form) {
  try {
    var dropbox = "Work_Collector";
    var folder, folders = DriveApp.getFoldersByName(dropbox);
    if (folders.hasNext()) {
      folder = folders.next();
    } else {
      folder = DriveApp.createFolder(dropbox);
    }

    var blob = form.myFile;
    // 提取原文件的扩展名(比如.pdf/.docx)
    var originalFileName = blob.getName();
    var fileExtension = originalFileName.substring(originalFileName.lastIndexOf('.'));
    // 拼接用户输入的名称和扩展名,作为新文件名
    var customFileName = form.myName.trim() + fileExtension;
    // 创建文件时使用自定义名称
    var file = folder.createFile(blob.setName(customFileName));
    
    file.setDescription("Uploaded by " + form.myName);
    return "File uploaded successfully: " + customFileName;
  } catch (error) {
    return error.toString();
  }
}

修改点说明:

  • 新增了提取原文件扩展名的逻辑,确保自定义文件名不会破坏文件格式
  • 通过blob.setName(customFileName)修改上传文件的名称,再存入云端硬盘

2. 关联Google表格:记录上传信息

接下来我们添加代码,把每次上传的关键信息(用户名、文件名、上传时间、文件链接)自动保存到Google表格里。你需要先创建一个Google表格,把它的ID替换到代码里(表格ID在URL中,比如https://docs.google.com/spreadsheets/d/XXX/edit里的XXX就是ID)。

最终完整的App脚本(包含表格关联):

function doGet(e) {
  return HtmlService.createHtmlOutputFromFile('form.html');
}

function uploadFiles(form) {
  try {
    var dropbox = "Work_Collector";
    var folder, folders = DriveApp.getFoldersByName(dropbox);
    if (folders.hasNext()) {
      folder = folders.next();
    } else {
      folder = DriveApp.createFolder(dropbox);
    }

    var blob = form.myFile;
    // 提取原文件的扩展名
    var originalFileName = blob.getName();
    var fileExtension = originalFileName.substring(originalFileName.lastIndexOf('.'));
    // 拼接自定义文件名
    var customFileName = form.myName.trim() + fileExtension;
    // 创建自定义名称的文件
    var file = folder.createFile(blob.setName(customFileName));
    
    file.setDescription("Uploaded by " + form.myName);

    // 关联Google表格部分
    var spreadsheetId = "你的Google表格ID"; // 替换成你的表格ID
    var sheet = SpreadsheetApp.openById(spreadsheetId).getActiveSheet();
    // 准备要写入表格的记录
    var uploadRecord = [
      form.myName.trim(), // 上传者名称
      customFileName, // 上传后的文件名
      new Date(), // 上传时间
      file.getUrl() // 文件的云端链接
    ];
    // 将记录追加到表格最后一行
    sheet.appendRow(uploadRecord);

    return "File uploaded successfully: " + customFileName + "<br>Record saved to spreadsheet";
  } catch (error) {
    return error.toString();
  }
}

表格设置提示:

  • 建议在表格第一行添加表头:用户名、文件名、上传时间、文件链接,这样记录会更清晰
  • 第一次运行脚本时会弹出权限申请,按照提示授权即可,确保脚本能访问你的表格

HTML代码无需修改

你的HTML表单已经包含了用户名输入框和文件上传控件,完全满足需求,直接保留即可:

<form id="myForm" align="center"> 
  <input type="text" name="myName" placeholder="Your name.."> 
  <input type="file" name="myFile"> 
  <input type="submit" value="Upload File" onclick="this.value='Uploading..'; google.script.run.withSuccessHandler(fileUploaded) .uploadFiles(this.parentNode); return false;"> 
</form> 
<div id="output"></div> 
<script> 
  function fileUploaded(status) { 
    document.getElementById('myForm').style.display = 'none'; 
    document.getElementById('output').innerHTML = status; 
  } 
</script>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 16:17:53