获取Gmail邮件

时间:2012-12-19 14:08:25

标签: javascript gmail google-apps-script

我有一个代码可以接收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>

我需要过滤身体:

eu: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;
}

3 个答案:

答案 0 :(得分:1)

有一个类似的问题here,请看Corey的答案(我不会在这里复制代码),它完全符合您的要求:-)

答案 1 :(得分:0)

您可以尝试使用正则表达式去除标记

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

有时候会出现问题,所以你应该小心,但对于简单的HTML,就像你列出的样本一样,这将有效。

答案 2 :(得分:0)

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

var text = $('<div>Text 1<b>Bold Text</b> Text 2</div>').text();
// stores 'Text 1 Bold Text Text 2'