Google Apps 脚本 Gmail getPlainBody 换行符

Google Apps Script Gmail getPlainBody Line Breaks

使用 Google Apps Script Gmail 库,当我使用函数 GmailMessage.getPlainBody() 时,API 似乎将以前的一段分成多段,可能通过使用字符限制。例如,我的电子邮件中有一段是这样写的:

From the link you sent me, I gleaned that Gmail refers to their secure email as confidential.

但是当我在邮件上调用这个函数时,它变成了:

From the link you sent me, I gleaned that Gmail refers to their
secure email as confidential.

而且,当我在新行分隔符上拆分电子邮件文本并进行一些清理以使用我的输出创建一个数组时,我最终得到:

['From the link you sent me, I gleaned that Gmail refers to their', 'secure email as confidential.']

我查看了this Reddit post,似乎是在处理类似的问题。但是,我尝试了提出问题的人建议的解决方案:

body =  message.getPlainBody().replace(/\r\n\r\n/gm,'aaaLINEBREAKERaaa').replace(/\r\n/gm,' ').replace(/aaaLINEBREAKERaaa/gm, '\r\r').replace(/  /gm,' ')

它并没有完全满足我的需要。有没有其他人遇到过这个问题,如果有,您有建议的解决方法吗?谢谢!

我遇到了同样的问题。在那种情况下,我使用了一个解决方法。

查看邮件时,发现邮件正文中包含HTML正文,HTML正文中有原文段落,我就利用了这种情况。因此,在此解决方法中,从 HTML 正文中检索原始文本,并将 HTML 转换为文本。至此,得到了原始段落。示例脚本如下

示例脚本:

此脚本使用驱动器 API 将 HTML 转换为文本。所以 pelase enable Drive API at Advanced Google services.

var message =  // Here, please use your "message".

var html = message.getBody();
var id = Drive.Files.insert({title: "temp", mimeType: MimeType.GOOGLE_DOCS}, Utilities.newBlob(html, MimeType.HTML)).id;
var text = DocumentApp.openById(id).getBody().getText(); // or DocumentApp.openById(id).getBody().getText().trim();
DriveApp.getFileById(id).setTrashed(true);
console.log(text)

参考文献: