GAS脚本执行GmailApp.sendEmail突然报Invalid argument: fileName错误求助
排查解决思路
报错指向fileName参数非法,按以下优先级排查即可:
- 第一步排查PDF文件名合法性:你当前的PDF文件名取自C54单元格内容+后缀,首先检查C54单元格近期是否新增了以下非法字符:
/ \ : * ? " < > |,或是存在空值、换行符、不可见控制字符。你可以在设置PDFsubject1的代码后加一行Logger.log('PDF文件名:' + PDFsubject1),手动触发一次脚本后查看执行日志,确认文件名是否符合预期。 - 第二步验证PDF Blob是否生成正常:你可以临时添加一行测试代码
DriveApp.createFile(blob1),注释掉发送邮件的代码后手动执行,如果这一步报错,说明是表格转PDF环节出了问题:要么是近期表格体积超出了转PDF的大小限制,要么是表格的权限设置变更导致脚本无法读取完整内容转码。 - 第三步做兼容化修复:不管是不是非法字符的问题,都可以给文件名加一层非法字符过滤,避免后续单元格内容变动再次触发报错,修改设置
PDFsubject1的代码为:
var rawFileName = srcSheet1.getRange('C54').getValue().toString(); // 替换所有文件名非法字符和控制字符为下划线 var cleanFileName = rawFileName.replace(/[\\/:*?"<>|\r\n\t\f\v]/g, '_'); var PDFsubject1 = cleanFileName + ".pdf"; blob1.setName(PDFsubject1);
- 第四步排查权限变动:检查脚本的OAuth权限是否完整,打开脚本编辑器的「项目设置」,确认已添加以下作用域:
https://www.googleapis.com/auth/gmail.send(发送邮件权限)https://www.googleapis.com/auth/drive.readonly(读取Drive文件转PDF权限)
如果缺失对应权限,重新运行一次脚本,在授权弹窗里重新授予权限即可。
内容的提问来源于stack exchange,提问作者user3279926
相关产品推荐
相关产品推荐

