2012-10-10 121 views
0

我試圖抓取一些關於我的Gmail帳戶的報告,除非我嘗試使用正則表達式時,一切看起來都很好。我的目標是從報告中獲取信息,並將其粘貼到電子表格中,但是做了一些測試,我發現有時它不會從gmail中檢索任何東西(如果我將電子郵件正文粘貼到電子表格中,我會看到兩個或三個空白,二十個電子郵件,再次空白),所以我得到NULL作爲正則表達式的結果。GmailApp抓取電子郵件

任何人都可以解釋我什麼我做錯了嗎?這是我第一週使用Google App腳本引擎。

在此先感謝。

這是代碼。

function recopilarInformes() { 
    var threads = GmailApp.search('label:informes'); 

    var messages; 
    var ContentEmail; 
    var reportDate,CFree,FFree; 


    for (var i = 0; i < 20 /*threads.length*/; i++) { 
    messages = threads[i].getMessages() 
    reportDate = messages[0].getSubject().replace("Informe ",""); 
    ContentEmail = messages[0].getBody(); 

    CFree = /(\d+.\d+)\s.*GB/g(ContentEmail); 
    FFree = /F<.td><td\s\w+\W+\w+.\w+.>\s(\d+.\d+)/(ContentEmail); 

    Logger.log(reportDate); 
    Logger.log(/(\d+.\d+)\s.*GB/g(ContentEmail)); 

    } 

編輯

我得出的結論,儘管我不知道如何準確使用從谷歌應用程序腳本Gmail的對象,正則表達式是不是acomplys我的目標的最佳途徑。

下面是當前的代碼

function recopilarInformes() { 
    var threads = GmailApp.search('label:informes'); 
     Logger.log(threads); 
     Logger.log(threads[0].getMessages()); 
     Logger.log(threads[0].getMessages().length); 
     var messages;// = threads[0].getMessages(); 
     var ContentEmail;// = messages[0].getBody(); 
     var reportDate,CFree,FFree; 


     for (var i = 0; i < threads.length; i++) { 
     messages = threads[i].getMessages() 
     reportDate = messages[0].getSubject().replace("Informe ","");//creo si hubiera más mensajes en la conversación (thread) habría más entradas en este array, que ahora mismso solo contiene una cosa 
     ContentEmail = messages[0].getBody(); 

     Logger.log(reportDate); 
     // Logger.log(/(\d+.\d+)\s.*GB/g(ContentEmail)); 
     actualData = ContentEmail.split("------------ Espacio en las unidades -----------")[1]; 
     actualData = actualData.replace(/([^ 0-9,])/g,"").trim().replace(/\s+/g," ").split(" "); 
     insertValue([reportDate,actualData[0],actualData[1]]); 
     } 



    } 
+0

我在應用程序腳本標記中更改了您的應用程序引擎標記。 – voscausa

+0

謝謝,我不確定哪一個是正確的。 – Danielo515

+0

我不清楚你是否遇到正則表達式或GmailApp的問題。你在這裏記錄兩行,日期和內容。每20封電子郵件都會跳過這兩行嗎?或者只有內容行被跳過? –

回答

0

使用中循環。

function recopilarInformes() { 
    var threads = GmailApp.search('label:informes'); 
    var message, reportDate; 

    for (var i in threads) { 
    message = threads[i].getMessages(); 
    reportDate = message[0].getSubject(); 

    Logger.log(reportDate); 
    } 
} 
+0

感謝你的代碼看起來比我的更乾淨和可用。 – Danielo515