首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >提取未读电子邮件(以纯文本形式)并存储在Google中

提取未读电子邮件(以纯文本形式)并存储在Google中
EN

Stack Overflow用户
提问于 2017-01-12 10:51:40
回答 1查看 1K关注 0票数 0

问题:日报我们收到了十几封邮件。我们需要定期打印所有这些文件。谷歌应用程序脚本是否可能只读取未读邮件并将它们存储在Google中?没有HTML什么都没有,我只需要以下格式的纯文本。

​: S. Banerjee Date: 2017年1月3日02:40 主题: Re:新年快乐致:"Br. Sayan“..信息..

我正在寻找一个解决方案,但只得到了类似于下面的这里。现在,我们需要获得未读邮件的msgID,将它们传递给函数。其余的格式可以在我认为的零敲碎打的基础上解决。

代码语言:javascript
运行
复制
function saveGmail(msgID) {

  // Based on Drive Scoop
  // Available at https://github.com/google/gfw-deployments

  var message = GmailApp.getMessageById(msgID);

  // Grab the message's headers.
  var from = message.getFrom();
  var subject = message.getSubject();
  var to = message.getTo();
  var cc = message.getCc();
  var date = message.getDate();
  var body = message.getBody();

  // Begin creating a doc.
  var document = DocumentApp.create(subject);  
  var document_title = document.appendParagraph(subject);  
  document_title.setHeading(DocumentApp.ParagraphHeading.HEADING1);

  var style = {};
  style[DocumentApp.Attribute.HORIZONTAL_ALIGNMENT] = (DocumentApp.HorizontalAlignment.CENTER);
  document_title.setAttributes(style);

  var headers_heading = (document.appendParagraph("Gmail Message Headers"));
  headers_heading.setHeading(DocumentApp.ParagraphHeading.HEADING2);

  AddGmailHeaderToDoc(document, "From", from);
  AddGmailHeaderToDoc(document, "To", to);
  AddGmailHeaderToDoc(document, "Cc", cc);
  AddGmailHeaderToDoc(document, "Date", date);
  AddGmailHeaderToDoc(document, "Subject", subject);

  var body_heading = (
    document.appendParagraph("Body (without Markup)"));
  body_heading.setHeading(DocumentApp.ParagraphHeading.HEADING2);

  var sanitized_body = body.replace(/<\/div>/, "\r\r");
  sanitized_body = sanitized_body.replace(/<br.*?>/g, "\r");
  sanitized_body = sanitized_body.replace(/<\/p>/g, "\r\r");
  sanitized_body = sanitized_body.replace(/<.*?>/g, "");
  sanitized_body = sanitized_body.replace(/'/g, "'");
  sanitized_body = sanitized_body.replace(/"/g, '"');
  sanitized_body = sanitized_body.replace(/&/g, "&");
  sanitized_body = sanitized_body.replace(/\r\r\r/g, "\r\r");

  var paragraph = document.appendParagraph(sanitized_body);

  document.saveAndClose();

  return document.getUrl();

}

function AddGmailHeaderToDoc(document, header_name, header_value) {
  if (header_value === "") return;
  var paragraph = document.appendParagraph("");
  paragraph.setIndentStart(72.0);
  paragraph.setIndentFirstLine(36.0);
  paragraph.setSpacingBefore(0.0);
  paragraph.setSpacingAfter(0.0);    
  var name = paragraph.appendText(header_name + ": ");
  name.setBold(false);
  var value = paragraph.appendText(header_value);
  value.setBold(true);
}

您的帮助将非常感谢!!

EN

回答 1

Stack Overflow用户

发布于 2017-01-12 16:43:05

一种更容易使用的方法可能是:未读搜索

代码语言:javascript
运行
复制
  var threads = GmailApp.search('is:unread');
  var messages = threads[0].getMessages(); 
  for (var i = 0; i < messages.length; i++) {
    Logger.log(messages[i].getId());
  }

这将记录Id,但您也可以返回它们。还请注意,线程和消息是不同的。上面的内容将得到第一个未读线程和这个线程中的所有消息(即使消息被读取)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41611262

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档