Google Script新手求助:如何实现邮件发送docx格式附件?
解决Google Script发送DOCX格式附件的问题
嘿,作为Google Script初学者遇到这种格式转换的问题太正常啦,完全不用不好意思~之前那种直接拼URL的旧方法确实已经失效了,Google更新了相关的API接口,现在用官方的Advanced Drive Service来导出DOCX才是稳妥的方案,我来一步步教你怎么做:
第一步:启用Advanced Drive Service
在你的脚本编辑器里,点击顶部菜单栏的「服务」→「添加服务」,找到「Drive API」并添加它。这一步是让脚本能调用官方的Drive导出接口,比旧的URL方法靠谱多了。
第二步:修改你的代码,同时生成PDF和DOCX附件
你原来生成PDF的代码可以保留,然后加上DOCX的生成逻辑,完整示例如下:
// 替换成你的文件ID var copyId = "你的文件ID"; // 获取目标文件 var targetFile = DriveApp.getFileById(copyId); var fileName = targetFile.getName(); // 生成PDF格式的Blob var pdfBlob = targetFile.getAs("application/pdf"); pdfBlob.setName(fileName + ".pdf"); // 用Drive API导出DOCX格式的Blob var docxContent = Drive.Files.export(copyId, "application/vnd.openxmlformats-officedocument.wordprocessingml.document"); var docxBlob = Utilities.newBlob(docxContent, "application/vnd.openxmlformats-officedocument.wordprocessingml.document", fileName + ".docx"); // 发送邮件,同时添加两个附件 MailApp.sendEmail({ to: "收件人邮箱@example.com", subject: "包含PDF和DOCX的文件附件", body: "这是你需要的两份格式的文件~", attachments: [pdfBlob, docxBlob] });
补充说明
如果你的文件本身就是已经上传到Drive的DOCX文件(不是Google原生文档),那更简单,直接用getFileById(copyId).getBlob()就能获取到DOCX的Blob,不用走导出流程~
之前那种拼接URL的旧方法失效,是因为它依赖的是Google Docs未公开的导出接口,后来Google做了权限限制和接口更新,所以旧代码就没法用了。而我们现在用的Drive.Files.export是官方公开的API,只要启用了Advanced Drive Service就可以稳定使用。
内容的提问来源于stack exchange,提问作者Edward Evans
相关产品推荐
相关产品推荐

