如何在Google App Script中通过单元格值动态设置PDF文件名?
问题解决:动态设置导出PDF文件名
你的问题出在两个关键细节上,直接修改就能解决:
- 函数调用缺少括号:你写的
newFile.setName(nameSheet)里,nameSheet是函数本身的引用,不是它执行后返回的文件名,必须加上括号nameSheet()才能触发函数执行并获取到目标值。 - 函数未返回值:
nameSheet函数里仅获取了单元格的值,但没有把这个值返回出去,需要添加return name;语句,让函数能传递出文件名内容。
另外提醒:getCurrentCell()依赖用户当前选中的单元格,要是用户操作时选中了其他位置,导出的文件名就会出错。建议改成固定单元格引用更稳妥,比如把sh.getCurrentCell().offset(3, 6)替换成sh.getRange("G4")(对应从A1单元格往下3行、往右6列的位置,你可以根据实际表格结构调整)。
修改后的完整脚本:
function exportSheet() { var sheetName = "CB" var ss = SpreadsheetApp.getActive(); var sheets = ss.getSheets(); for (var i = 0; i < sheets.length; i++) { if (sheets[i].getSheetName() !== sheetName) { sheets[i].hideSheet() } } var newFile = DriveApp.createFile(ss.getBlob()); for (var i = 0; i < sheets.length; i++) { sheets[i].showSheet() } // 修正:调用函数获取返回值 newFile.setName(nameSheet()); newFile.moveTo(DriveApp.getFolderById("你的文件夹ID")); } function nameSheet() { var ss=SpreadsheetApp.getActive(); var sh=ss.getSheetByName('STRT'); // 可选:替换为固定单元格引用,避免当前单元格变动导致错误 // var name=sh.getRange("G4").getValue(); var name=sh.getCurrentCell().offset(3, 6).getValue(); // 新增:返回获取到的文件名 return name; }
内容的提问来源于stack exchange,提问作者horsefish
相关产品推荐
相关产品推荐

