0

我有一个代码可以获取 Gmail 中的电子邮件正文

但是正文带有“HTML标签”,我如何过滤掉这些“标签”?

例子:

身体:

<span><span style="font-weight:bold" dir="ltr">eu</span>: 
<a href="http://neuhaus.com.br" target="_blank">neuhaus.com.br</a>
D6477233ACC7C56D</span><br>

我需要过滤的身体:

欧盟:neuhaus.com.br D6477233ACC7C56D

代码:

function processPending() {  
  var label_pending = GmailApp.getUserLabelByName('Teste');  
  var label_done = GmailApp.getUserLabelByName('TesteDone');  
  var sheet = SpreadsheetApp.getActiveSheet();

  var rowstart = (sheet.getLastRow() + 1)

  var threads = label_pending.getThreads();  

  for (var t in threads) {  
    var thread = threads[t];  

    var message = thread.getMessages()[0];

    var messbody = message.getBody();

    thread.removeLabel(label_pending);  
    thread.addLabel(label_done);

    sheet.getRange(rowstart, getColIndexByName('Conteúdo')).setValue(messbody);
    rowstart++;
  }
  return 0;
}  

function getColIndexByName(colName) {
  var sheet = SpreadsheetApp.getActiveSheet();
  var numColumns = sheet.getLastColumn();
  var row = sheet.getRange(1, 1, 1, numColumns).getValues();
  for (i in row[0]) {
    var name = row[0][i];
    if (name == colName) {
      return parseInt(i) + 1;
    }
  }
  return -1;
}
4

3 回答 3

1

使用textContentDOM 元素的属性。它的 HTML 标签被剥离了。

于 2012-12-19T14:27:01.460 回答
0

如果允许使用 jQuery,您应该检查$.text()函数。

var text = $('<div>Text 1<b>Bold Text</b> Text 2</div>').text();
// stores 'Text 1 Bold Text Text 2'
于 2012-12-19T14:22:47.083 回答
0

您可以尝试使用正则表达式来剥离标签

var stripped = messbody.replace(/(\<[^>]+\>)+/g,' ');

这有时会出现问题,因此您应该小心,但是对于您列出的示例这样的简单 HTML,这将起作用。

于 2012-12-19T14:20:54.647 回答