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

Google脚本发送的PDF部分收件人无法打开问题求助

PDF附件无法打开的排查与解决思路
  • 优化PDF导出参数:当前代码直接导出整个表格为PDF,部分邮件客户端可能对默认导出的PDF兼容性不足。建议指定导出范围、纸张尺寸等参数,仅导出发票所在工作表,避免冗余内容干扰:
function EmailInvoice() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getActiveSheet();
  var email = sheet.getRange("b12").getValue();
  var cusname = sheet.getRange("b5").getValue();
  
  // 配置PDF导出选项
  var pdfExportOpts = {
    format: 'A4',
    portrait: true,
    sheetId: sheet.getSheetId(), // 仅导出当前工作表
    printRange: 'A1:E20', // 替换为发票实际单元格范围
    scale: 4 // 适配打印比例,防止内容裁剪
  };
  
  // 生成带配置的PDF Blob
  var pdfBlob = ss.getAs(MimeType.PDF)
    .setName("Invoice.pdf")
    .setContentOptions(pdfExportOpts);
  
  var message = {
    to: email,
    subject: "Invoice from *******",
    body: "Dear " + cusname + ", Please find attached Invoice. Any queries to: sales@sudburycaravans.co.uk",
    attachments: [pdfBlob]
  };
  MailApp.sendEmail(message);
}
  • 添加内容加载延迟:偶尔表格内容未完全加载就生成PDF,会导致文件损坏。可在生成PDF前加入短暂延迟:
// 在生成PDF代码前插入延迟
Utilities.sleep(2000); // 延迟2秒,可根据表格复杂度调整
  • 改用Drive API生成PDF:默认的getAs()方法生成的PDF可能存在兼容性问题,使用Drive API导出的PDF兼容性更稳定(需在脚本编辑器的「服务」中启用Google Drive API):
function EmailInvoiceWithDriveAPI() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getActiveSheet();
  var email = sheet.getRange("b12").getValue();
  var cusname = sheet.getRange("b5").getValue();
  
  var fileId = ss.getId();
  // 构造Drive API导出链接,指定参数
  var exportUrl = `https://docs.google.com/spreadsheets/d/${fileId}/export?` +
    `format=pdf&size=A4&portrait=true&gid=${sheet.getSheetId()}&range=A1:E20`;
  
  var token = ScriptApp.getOAuthToken();
  var response = UrlFetchApp.fetch(exportUrl, {
    headers: { 'Authorization': `Bearer ${token}` }
  });
  
  var pdfBlob = response.getBlob().setName("Invoice.pdf");
  
  var message = {
    to: email,
    subject: "Invoice from *******",
    body: "Dear " + cusname + ", Please find attached Invoice. Any queries to: sales@sudburycaravans.co.uk",
    attachments: [pdfBlob]
  };
  MailApp.sendEmail(message);
}
  • 补充收件人引导:在邮件正文添加提示,若附件无法打开,可联系sales@sudburycaravans.co.uk重新发送适配格式的发票,减少用户困扰。

  • 针对性测试验证:联系几位出现问题的收件人,发送不同参数生成的PDF,确认是格式兼容性还是客户端环境问题,再调整优化方向。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 00:39:53