You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Google Apps Script发送PDF时出现无效参数错误求助

解决Google Apps Script发送PDF时的「Invalid argument: fileName」错误

问题根源

报错指向GmailApp.sendEmail的附件参数,核心原因是PDF Blob的文件名包含Gmail不支持的特殊字符。你的代码里用MM/dd/yy hh:mm a生成日期,其中的/和:属于邮件附件文件名的非法字符,导致Gmail拒绝处理。

修复方案

1. 修改日期格式,移除非法字符

把日期格式里的/换成-,:换成-,避免生成包含特殊字符的文件名。

2. 显式给Blob设置合法文件名

在获取PDF Blob时,直接通过setName指定合规的文件名,确保Gmail能识别。

修改后的代码片段

var date = new Date();
var zone = Session.getScriptTimeZone();
// 修改日期格式,替换非法字符
var formattedDate = Utilities.formatDate(date, zone, 'MM-dd-yy hh-mm a');
var docName = "title here - " + formattedDate;
var doc = DocumentApp.create(docName);
var docFiles = DriveApp.getFilesByName(docName);
var docFile = docFiles.next();
var noteBody = doc.getBody();

var form = FormApp.getActiveForm();
var title = form.getTitle();
var items = form.getItems(); //includes non-question items
var responseSet = form.getResponses();
var lastResponse = responseSet.length - 1;
var itemResponse = responseSet[lastResponse].getItemResponses();

// 填充文档内容的代码...

// 创建PDF部分
doc.saveAndClose();
var pdfBlob = docFile.getBlob().getAs('application/pdf');
// 显式设置Blob的合法文件名
pdfBlob.setName(title + " - " + formattedDate);
var newPDF = docFolder.createFile(pdfBlob);
docFile.setTrashed(true);

var recipientEmail = itemResponse[1].getResponse();
var subject = title;
var body = "Check out the PDF form attached!";

// 发送邮件
GmailApp.sendEmail(recipientEmail, subject, body, {attachments: [pdfBlob]});

额外优化

  • 无需重复通过Drive ID获取PDF文件,第一次生成的Blob已经可以直接使用,减少不必要的Drive API调用。
  • 始终确保文件名只包含字母、数字、-、_、.这类通用合法字符,避免跨服务的兼容性问题。

内容的提问来源于stack exchange,提问作者Raffi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 04:30:59