如何使用 Google Apps 脚本将 PDF 正文格式化为看起来像电子邮件?

Posted

技术标签:

【中文标题】如何使用 Google Apps 脚本将 PDF 正文格式化为看起来像电子邮件?【英文标题】:How to format PDF body to look like the email using Google Apps Script? 【发布时间】:2021-12-27 16:59:07 【问题描述】:

下面的代码确实获得了表单响应,并使用格式如下的正文通过电子邮件发送它:

问题/标题1

响应1

问题/标题2

响应2

但是,创建的 pdf 将其全部显示在一行中,如下所示: 新的回复表单:问题/标题 1 响应 1 问题/标题 2 响应 2...

如何创建它以使其看起来像上面格式化的电子邮件正文?

function onFormSubmit(e) 
 
  // Get the response that was submitted.
  var formResponse = e.response;

  // Get the items (i.e., responses to various questions)
  // that were submitted.
  var itemResponses = formResponse.getItemResponses();

  // Create a variable emailBody to store the body
  // of the email notification to be sent.
  var emailBody = "New form response:\n\n";

  // Put together the email body by appending all the
  // questions & responses to the variable emailBody.
  itemResponses.forEach(function(itemResponse) 
    var title = itemResponse.getItem().getTitle();
    var response = itemResponse.getResponse();
    emailBody += title + "\n" + response + "\n\n";
  );

  // Send the email notification using the
  // sendEmail() function.
  sendEmail(emailBody);

  var folderID = "SOME_FOLDERID";
  var intermediate = DriveApp.createFile('New Form Response','<b>'+ emailBody +'</b>', 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);


// A function that sends the email
// notification.
function sendEmail(emailBody) 
  MailApp.sendEmail("EMAIL_ADDRESS", "New form response", emailBody);

【问题讨论】:

【参考方案1】:

您需要为emailBody 中的新行使用&lt;br&gt; 标签,因为您在创建文件时使用的是HTML 类型。您可以使用String.replaceAll() 将\n 替换为&lt;br&gt;

//Replace all "\n" with "<br>"
emailBody = emailBody.replaceAll("\n","<br>");
var intermediate = DriveApp.createFile('New Form Response','<b>'+ emailBody +'</b>', MimeType.HTML);

输出:

注意:

实际上,您可以在 html 正文中使用 \n 作为换行符,但您需要在 css 中设置它。见Line break in HTML with '\n'

【讨论】:

正确!谢谢!

以上是关于如何使用 Google Apps 脚本将 PDF 正文格式化为看起来像电子邮件?的主要内容,如果未能解决你的问题,请参考以下文章

仅在Google Apps脚本中是新文件时才解压缩文件

如何在对 Google Apps 脚本的发布请求中捕获上传的文件?

如何使用 Google Apps 脚本将公式添加到 Google 表格?

如何使用 Google Apps 脚本将来自 Google 电子表格和 ScriptDB 的数据插入 BigQuery 表

如何将 JSON 文件转换为使用 Google Apps 脚本分隔的新行?

如何将.gpx文件附加到使用Google Apps脚本发送的邮件中?