ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

在JavaScript中获取Gmail邮件正文时,删除HTML格式

2019-10-31 08:37:50  阅读:315  来源: 互联网

标签:gmail google-apps-script javascript


我想在我的Google Apps脚本中删除html格式.我目前正在搜索电子邮件并将结果打印到Google电子表格中.我想知道是否有替换文本的方法.我知道正则表达式,但我认为它不能与getBody函数一起使用.

在此问题上,我将非常感谢您的反馈或帮助.

码:

function Search() {

var sheet   = SpreadsheetApp.getActiveSheet();
var row     = 2;

// Clear existing search results
sheet.getRange(2, 1, sheet.getMaxRows() - 1, 4).clearContent();

// Which Gmail Label should be searched?
var label   = sheet.getRange("F3").getValue();

// Get the Regular Expression Search Pattern
var pattern = sheet.getRange("F4").getValue();

// Retrieve all threads of the specified label
var threads = GmailApp.search("in:" + label);

for (var i = 0; i < threads.length; i++) {

var messages = threads[i].getMessages();

for (var m = 0; m < messages.length; m++) {
 var msg = messages[m].getBody();

// Does the message content match the search pattern?
if (msg.search(pattern) !== -1) {


 // Print the message subject
 sheet.getRange(row,3).setValue(messages[m].getBody());

解决方法:

替换为:

// Print the message subject
sheet.getRange(row,3).setValue(messages[m].getBody());

有了这个:

// Print the message subject
sheet.getRange(row,3).setValue(getTextFromHtml(messages[m].getBody()));

getTextFromHtml()函数已从this answer开始改编,并增加了一些基本格式的处理(编号和项目符号列表,段落分隔符).

function getTextFromHtml(html) {
  return getTextFromNode(Xml.parse(html, true).getElement());
}

var _itemNum; // Used to lead unordered & ordered list items.

function getTextFromNode(x) {
  switch(x.toString()) {
    case 'XmlText': return x.toXmlString();
    case 'XmlElement':
      var name = x.getName().getLocalName();
      Logger.log(name);
      var pre = '';
      var post = '';
      switch (name) {
        case 'br':
        case 'p':
          pre = '';
          post = '\n';
          break;
        case 'ul':
          pre = '';
          post = '\n';
          itemNum = 0;
          break;
        case 'ol':
          pre = '';
          post = '\n';
          _itemNum = 1;
          break;
        case 'li':
          pre = '\n' + (_itemNum == 0 ? ' - ' : (' '+ _itemNum++ +'. '));
          post = '';
          break;
        default:
          pre = '';
          post = '';
          break;
      }
      return pre + x.getNodes().map(getTextFromNode).join('') + post;
    default: return '';
  }
}

标签:gmail,google-apps-script,javascript
来源: https://codeday.me/bug/20191031/1974247.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有