替代或修复谷歌脚本中的“\ n”

时间:2012-10-09 10:42:03

标签: email text google-apps-script carriage-return

我第一次在这里提出一个问题(在发布之前一直在搜索),所以请承担我可能犯的错误。

问题: 我目前正在开发一个谷歌网站的网站。在那里制作了一些表格,并在这些表格中添加了一个脚本,以便在表单提交并保存在电子表格后通过电子邮件发送信息输入,这很好用,但收到的电子邮件中的邮件非常混乱。 / p>

代码中的所有“\ n”表达式都被忽略了。 我从www.labnol.org获得了代码的基础,并且稍微编辑了一下。

首先,代码:

    function sendFormByEmail(e) 
{    
  //I took the two mail addresses out here, but they are working in the original

  var email = "first mail address";
  var email2 = "second mail address";

  var subject = "New Announce your visit form submitted";  


  var s = SpreadsheetApp.getActiveSheet(); 
  var headers = s.getRange(1,1,1,s.getLastColumn()).getValues()[0]; 
  var message = "A new 'Announce your visit' form has been submitted on the website: \n\n" + "\n\n";   

  for(var i in headers) {
    message = message + "\n \n";
    message += headers[i] + ' = '+ e.namedValues[headers[i]].toString() + "\n\n";
  }

  var senderEmail = e.namedValues[headers[6]].toString();


  MailApp.sendEmail(email, senderEmail, subject, message);
  MailApp.sendEmail(email2, senderEmail, subject, message);

}

正如你所看到的,我一直在努力将\ n放在不同的地方作为替代,但无论我放在哪里它都会被忽略。

原始循环看起来像这样:

  for(var i in headers)
    message += headers[i] + ' = '+ e.namedValues[headers[i]].toString() + "\n\n";

在我对代码进行一些修改之前,它工作正常。但即使我没有触及这些行,也没有触及有助于获取消息的代码的任何其他部分,\ n停止工作。 我一直试图解决它(因为搞砸了\ n放在上面的节目中),但没有成功。

所以现在我正试图找到一种方法来解决它们,或者至少是一种解决方法,并希望你们中的任何一个人都知道正在发生什么,或者如何让它们再次运作。

提前致谢。

ps:如果您需要更多信息,请告诉我

2 个答案:

答案 0 :(得分:4)

解决方案是使用GmailApp.sendEmail方法而不是MailApp.sendEmail方法。 GmailApp sendMail正确处理\n

答案 1 :(得分:2)

以下是您正在做的事情的替代解决方案:HtmlTemplate

一些示例代码:

function sendEmailWithTemplateExample() {
  var t = HtmlService.createTemplateFromFile("body.html");
  t.someValue = "some dynamic value";
  var emailBody = t.evaluate().getContent();
  MailApp.sendEmail("your@email.here", "test email", emailBody);
}

这是body.html中相应的模板代码(点击“文件 - >新建 - > Html文件”):

 Body goes here
<?= someValue ?>