【问题标题】:Prevent text wrapping using MailApp.sendEmail google sheets? google script使用 MailApp.sendEmail 谷歌表格防止文本换行?谷歌脚本
【发布时间】:2019-11-13 22:10:21
【问题描述】:

我有以下工作代码可以根据一个单元格的内容发送电子邮件。此单元格包含用于创建电子邮件的其他单元格的值。

电子邮件发送给 2 个收件人,并且工作正常。 但是,在收到电子邮件后,文本会在 74 个字符后换行。

样本表复制问题: https://docs.google.com/spreadsheets/d/1PDSHbrhxiJliTGNx2rlJRAJIrjITADVuGWqTuvpjrgw/edit?usp=sharing

如何防止包装?我希望电子邮件按照“正文”单元格中的显示方式发送:

=G2&char(10)&E9&char(10)&E10&char(10)&E11&char(10)&E12&char(10)&E13&char(10)&E14&char(10)&E15&char(10)&E16&char(10)&E17&char(10)&E18&char(10)&E19&char(10)&E20&char(10)&E21&char(10)&E22&char(10)&E23&char(10)&E24&char(10)&E25&char(10)&E26&char(10)&E27&char(10)&E28&char(10)&E29&char(10)&E30&char(10)&E31&char(10)

发送邮件功能:

var EMAIL_SENT = 'EMAIL_SENT';

function SendEmailACC() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("EmailACC");
  var startRow = 2; 
  var numRows = 2; 
  var dataRange = sheet.getRange(startRow, 1, numRows, 6); 
  var data = dataRange.getValues(); 
  for (var i = 0; i < data.length; ++i) {
    var row = data[i];
    var emailAddress = row[0]; // First column
    var message = row[1]; // Second column
    var subject = row[2]; 
    var emailSent = row[5]; 
    var EMAIL_SENT = "Email Processed";
    var EMAIL_FAIL = "Email Not Sent";
    if (emailSent !== EMAIL_SENT) { 

      MailApp.sendEmail(emailAddress, subject, message);
      sheet.getRange(startRow + i, 5).setValue(EMAIL_SENT);
      SpreadsheetApp.flush();

    }
  }
  Utilities.sleep(3000);// pause in the loop
  DeleteStatus();
}

示例电子邮件的外观:


Good Morning,

The following claim may have had an incorrect or missing ACC number or was not submitted by the referrer at time of request.
The claim has since been amended or submitted for the release of $50. Updated details are as below.

Vendor ID: ABC123
Invoice number: ABCDE12345
Service Date: 11/10/2019
Patient: John Smith
Service Code(s): COD88
First supplied ACC Number: BTT123
Exam Type: Exam Abc

Amended or updated ACC Number: COD123

Please let me know if any further information is required.


电子邮件的实际发送方式:

Good Morning,

The following claim may have had an incorrect or missing ACC number or was 
not submitted by the referrer at time of request.
The claim has since been amended or submitted for the release of $50. 
Updated details are as below.

Vendor ID: G0A368
Invoice number: ABCDE12345
Service Date: 11/10/2019
Patient: John Smith
Service Code(s): COD88
First supplied ACC Number: BTT123
Exam Type: Exam Abc

Amended or updated ACC Number: COD123

Please let me know if any further information is required.

任何建议表示赞赏

【问题讨论】:

  • 为了正确复制您的情况,您能否提供一个示例电子表格?当然,请删除您的个人信息。
  • 示例电子表格复制问题:docs.google.com/spreadsheets/d/…
  • 感谢您回复并提供示例电子表格。我能理解你的情况。所以我提出了一个修改点作为答案。你能确认一下吗?如果这不是您想要的结果,我深表歉意。

标签: google-apps-script google-sheets


【解决方案1】:

这个答案怎么样?请认为这只是几个可能的答案之一。

模式一:

在此模式中,使用了 GmailApp 类。

从:
MailApp.sendEmail(emailAddress, subject, message);
到:
GmailApp.sendEmail(emailAddress, subject, message);

模式2:

在此模式中,使用的是 Gmail API。在这种情况下,please enable Gmail API at Advanced Google services.

从:
MailApp.sendEmail(emailAddress, subject, message);
到:
var raw = Utilities.base64EncodeWebSafe("Subject: " + subject + "\r\n" + "To: " + emailAddress + "\r\n" + "Content-Type: text/plain; charset=UTF-8\r\n\r\n" + message + "\r\n\r\n");
Gmail.Users.Messages.send({raw: raw}, "me");
  • 如果邮件中包含Unicode 6.0 以上的字符,则需要使用Gmail API。请注意这一点。 Ref

注意:

  • 根据我的经验,我也遇到了同样的问题。那时,该问题可以通过使用 Class GmailApp 来解决。但不幸的是,我在官方文档中找不到关于这个的详细解释。对此我深表歉意。

参考资料:

【讨论】:

  • 谢谢,使用GmailApp后,邮件不换行了:)太棒了
  • @Matthew Rowlands 感谢您的回复。很高兴您的问题得到解决。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-02
  • 2021-11-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多