如何使用Google Scripts从Google Sheet指定单元格为复制的新工作表命名
问题原因与修正方案
现有代码的核心问题
DriveApp.getFileById()需传入待复制的源Google Sheet文件ID,你当前填入的文件夹ID属于参数错误- 直接给
setName()传入字符串'Specific Sheet!B3'不会自动读取单元格内容,需要先调用API获取单元格的实际值 SpreadsheetApp.getActive()获取的是当前运行脚本的表格文件,不是你刚复制生成的新文件,无法直接定位到新文件里的工作表
修正后可运行代码
function cloneGoogleSheet() { // 替换为你的目标存储文件夹ID var destFolder = DriveApp.getFolderById("替换为目标文件夹ID"); // 替换为你要复制的源Google Sheet文件ID var sourceFile = DriveApp.getFileById("替换为源Google Sheet文件ID"); // 读取指定单元格的内容作为新名称,若B3不在当前运行脚本的表内,需把getActive()替换为openById("对应表ID") var newFileName = SpreadsheetApp.getActive().getRange("Specific Sheet!B3").getDisplayValue(); // 复制文件到指定文件夹,直接用读取到的单元格内容命名 var newCopyFile = sourceFile.makeCopy(newFileName, destFolder); // 如果需要同时修改新文件内部的工作表名称,保留下面两行,不需要就删除 var newSS = SpreadsheetApp.openById(newCopyFile.getId()); newSS.getSheetByName("要修改的工作表原名").setName(newFileName); }
使用注意事项
- 文件夹、文件ID可以直接从浏览器地址栏对应资源的访问链接里提取,替换时直接填入引号内即可
- 首次运行脚本需要按提示完成权限授权,授权后就能正常触发
- 如果需要绑定按钮使用,直接在Google Sheet界面插入 drawing 作为按钮,指定绑定该函数即可
内容的提问来源于stack exchange,提问作者Ryan Zwerneman
相关产品推荐
相关产品推荐

