Apps Script开发需求:自动生成下一个作业编码并命名表格文件
实现自动生成作业编码并重命名表格的Apps Script方案
核心代码实现
function generateAndRenameSheet() { // 替换成你的目标文件夹ID(从文件夹URL末尾获取) const FOLDER_ID = "你的文件夹ID"; const folder = DriveApp.getFolderById(FOLDER_ID); const files = folder.getFilesByType(MimeType.GOOGLE_SHEETS); let maxCode = 0; // 遍历文件夹内所有表格文件 while (files.hasNext()) { const file = files.next(); const fileName = file.getName(); // 匹配文件名开头的4-5位数字编码 const codeMatch = fileName.match(/^(\d{4,5})/); if (codeMatch) { const code = parseInt(codeMatch[1], 10); if (code > maxCode) { maxCode = code; } } } // 生成新的5位编码(不足位数补前导0) const newCode = String(maxCode + 1).padStart(5, '0'); // 获取当前活跃表格 const currentSheet = SpreadsheetApp.getActiveSpreadsheet(); // 从指定单元格读取作业名称和客户名称(可根据需求调整单元格位置) const jobName = currentSheet.getRange("A1").getValue() || "未命名作业"; const clientName = currentSheet.getRange("B1").getValue() || "未命名客户"; // 重命名当前表格文件 currentSheet.rename(`${newCode} ${jobName} ${clientName}`); // 可选:将新编码写入指定单元格留存 currentSheet.getRange("C1").setValue(newCode); SpreadsheetApp.getUi().alert(`新编码生成完成:${newCode}\n文件已自动重命名`); }
操作步骤
- 获取文件夹ID:打开目标存储文件夹,复制URL末尾的一串字符(如
https://drive.google.com/drive/folders/XXXXXX中的XXXXXX),替换代码里的FOLDER_ID。 - 绑定脚本到按钮:
- 在Sheets中点击「插入」→「绘图」,绘制一个自定义按钮(比如文本设为“生成编码并重命名”),保存后关闭绘图界面。
- 右键点击刚插入的按钮,选择「分配脚本」,输入函数名
generateAndRenameSheet并确认。
- 配置输入源:如果需要自动读取作业/客户名称,提前在表格对应单元格(如A1、B1)填写内容;若需要弹窗手动输入,可把读取单元格的代码替换为
SpreadsheetApp.getUi().prompt()逻辑。
关键逻辑说明
- 数字匹配:用正则表达式
/^(\d{4,5})/精准匹配文件名开头的4-5位数字编码,避免误提取其他数字。 - 编码格式化:通过
padStart(5, '0')确保生成的编码始终为5位,比如123会自动转为00123。 - 权限授权:首次运行脚本会触发权限申请,允许脚本访问Drive和Sheets即可,属于正常操作。
测试提示
- 先在测试文件夹中放入几个模拟文件名(如
1234 测试作业 测试客户、05678 测试作业2 测试客户2),运行脚本验证编码生成是否正确。 - 若文件夹无现有文件,会自动生成初始编码
00001。
内容的提问来源于stack exchange,提问作者Andy Steinhauer
相关产品推荐
相关产品推荐

