如何修改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
相关产品推荐
相关产品推荐

