2012-12-20 108 views
1

我有一個代碼可以捕獲電子郵件並放在電子表格中,並將此電子郵件放在其他標籤中,但它的工作範圍是0 - 50,當我查看電子郵件標籤時出現超過50封電子郵件,爲什麼會發生這種情況?將電子郵件發送到電子表格

謝謝

代碼

function get_emails() { 
    var sheet = SpreadsheetApp.getActiveSheet(); 

    var label_pending = GmailApp.getUserLabelByName('Fale Conosco/Contato'); 
    var label_done = GmailApp.getUserLabelByName('Teste Done'); 

    var threads = label_pending.getThreads(0, 50); 

    var index = getColIndexByName('Conteúdo'); 

    for (var t in threads) { 

    var thread = threads[t]; 

    var html = thread.getMessages()[0].getBody(); 
    html=html.replace(/<\/div>/ig, '\n'); 
    html=html.replace(/<\/li>/ig, '\n'); 
    html=html.replace(/<li>/ig, ' *'); 
    html=html.replace(/<\/ul>/ig, '\n'); 
    html=html.replace(/<\/p>/ig, '\n'); 
    html=html.replace(/<br\/?>/ig, '\n'); 
    html=html.replace(/<[^>]+>/ig, ''); 

    sheet.getRange((sheet.getLastRow() + 1), index).setValue(html); 

    thread.removeLabel(label_pending); 
    thread.addLabel(label_done); 
    } 
    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

我不知道我是否正確地得到您的問題,但你正在處理的線程和線程可以通過許多電子郵件組成,所以這可能是原因,你得到了不同數量的消息

+0

謝謝,這只是我現在收到很多電子郵件是一個接一個的 –

0

我解決它現在的工作,我添加了一個循環的消息,看到消息

function processPending() { 
    var sheet = SpreadsheetApp.getActiveSheet(); 

    var label_pending = GmailApp.getUserLabelByName('Fale Conosco/Contato'); 
    var label_done = GmailApp.getUserLabelByName('Teste Done'); 

    var threads = label_pending.getThreads(0, 5); 

    var index = getColIndexByName('Conteúdo'); 

    for (var t in threads) { 

    var thread = threads[t]; 

    var messaqnt = thread.getMessages(); 

    for (var i in messaqnt) { 

     var html = messaqnt[i].getBody(); 
     html=html.replace(/<\/div>/ig, '\n'); 
     html=html.replace(/<\/li>/ig, '\n'); 
     html=html.replace(/<li>/ig, ' *'); 
     html=html.replace(/<\/ul>/ig, '\n'); 
     html=html.replace(/<\/p>/ig, '\n'); 
     html=html.replace(/<br\/?>/ig, '\n'); 
     html=html.replace(/<[^>]+>/ig, ''); 

     sheet.getRange((sheet.getLastRow() + 1), index).setValue(html); 

     thread.removeLabel(label_pending); 
     thread.addLabel(label_done); 
    } 
    } 
    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; 
} 
0

作爲對這兩個答案的補充,下面是一個腳本,它以一種不太「微不足道」的方式處理HTML到文本的轉換。

我用一個代碼a post by Corey G具有優勢(對我來說),以獲得重音符號法語例如......(這是我的使用情況;-)

function get_emails() { 
    var sheet = SpreadsheetApp.getActiveSheet(); 
    var label_pending = GmailApp.getUserLabelByName('NoLabel'); 

    var threads = label_pending.getThreads(0, 10); 
    var index = getColIndexByName('test'); 

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

    for(m=0;m<msgcount;++m){ 

    var html = thread.getMessages()[m].getBody(); 
    var txt = getTextFromNode(Xml.parse(html, true).getElement()); 
    sheet.getRange((sheet.getLastRow() + 1), index).setValue(txt); 
} 
    } 
    return 0; 
} 


function getTextFromNode(x) { 
    switch(x.toString()) { 
    case 'XmlText': return x.toXmlString(); 
    case 'XmlElement': return x.getNodes().map(getTextFromNode).join(''); 
    default: return ''; 
    } 
} 

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