2012-12-19 147 views
0

我有一個代碼需要在Gmail中的電子郵件正文獲取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; 
} 

回答

1

已經有過類似的問題here,看科裏的答案(我不會在這裏複製的代碼),你想要做什麼:-)

+0

謝謝你的幫助^^ –

0

你可以嘗試使用正則表達式來剝去標籤

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

有時對於這個問題,所以你要小心,但對於簡單的HTML像你所列出的樣本,這將工作。

+0

一個正則表達式可能不是最好的選擇。我想這要歸結爲尖括號是否在文本文字爲文字或>和< – Asmor

0

如果允許使用jQuery,您應該檢查$.text()函數。

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

使用DOM元素的textContent屬性。它的HTML標籤被剝離了。