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

如何使用Google Apps Script将PDF正文格式调整为与电子邮件格式一致

问题原因

你生成PDF时内容挤为单行的核心原因是:纯文本的换行符\n无法被HTML渲染识别,且你没有给内容加上对应的标题、段落HTML标签,仅在外层套了<b>标签,导致HTML渲染时所有内容默认按行内文本拼接,转PDF后自然就是连续的单行内容。

调整后的完整代码

function onFormSubmit(e) {
 
  // 获取提交的表单响应
  var formResponse = e.response;

  // 获取提交的所有问题响应项
  var itemResponses = formResponse.getItemResponses();

  // 定义变量存储待发送邮件的纯文本正文
  var emailBody = "New form response:\n\n";
  // 新增变量存储用于生成PDF的结构化HTML内容
  var htmlContent = "<h1>New form response</h1>";

  // 拼接所有问题和响应内容
  itemResponses.forEach(function(itemResponse) {
    var title = itemResponse.getItem().getTitle();
    var response = itemResponse.getResponse();
    // 纯文本内容拼接,保留原有邮件逻辑
    emailBody += title + "\n" + response + "\n\n";
    // HTML内容拼接,按要求用h2放标题,p放响应内容
    htmlContent += `<h2>${title}</h2><p>${response}</p>`;
  });

  // 调用sendEmail函数发送邮件通知
  sendEmail(emailBody);

  var folderID = "SOME_FOLDERID";
  // 生成中间HTML文件时使用结构化的htmlContent,不再用纯文本加b标签
  var intermediate = DriveApp.createFile('New Form Response', htmlContent, MimeType.HTML);
  var blob = intermediate.getAs(MimeType.PDF);
  Logger.log(blob.getContentType());
  var pdfFile = DriveApp.createFile(blob);
  DriveApp.getFolderById(folderID).addFile(pdfFile)
  DriveApp.getFileById(intermediate.getId()).setTrashed(true);
}

// 发送邮件通知的函数
function sendEmail(emailBody) {
  MailApp.sendEmail("EMAIL_ADDRESS", "New form response", emailBody);
}

核心修改点

  • 新增了独立的htmlContent变量存储结构化HTML内容,避免影响原有纯文本邮件的发送格式
  • 每个问题标题用<h2>标签包裹,每个响应用<p>标签包裹,完全匹配你需要的排版结构
  • 生成中间HTML文件时直接传入结构化的HTML内容,不再使用纯文本加外层<b>标签的错误写法

调整后生成的PDF格式就会和你要求的邮件正文格式完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 08:45:08