2014-09-02 87 views
0

嗨即時嘗試從Gmail中的標籤中發件人導出Emailadresses稱爲「Suarez」。但它只是跑步,從來沒有完成,它應該是大約372封電子郵件。打印到記錄器有多大?使用Apps腳本從Gmail中的標籤導出電子郵件地址

這裏是我嘗試:

function getEmailsadresses(){ 

var threads = GmailApp.search("in:suarez"); 

for (var i = 0; i < threads.length; i++) { 

    var messages = threads[i].getMessages(); 

    for (var m = 0; m < messages.length; m++) { 
    var msg = messages[m].getFrom(); 
    } 
} 

    Logger.log(msg()); // log from address of the message 

} 
+0

這不是太多...你應該把一個斷點裏面的「for」循環和檢查如果「消息」包含包含電子郵件對象的數組。 – 2014-09-02 12:15:50

+0

我覺得我有種感覺,你知道該怎麼做嗎? – 2014-09-02 12:30:25

+0

我將第一行更改爲:var threads = GmailApp.getUserLabelByName('suarez')。getThreads(1,10); 現在它似乎找到的地址,但我得到一個錯誤: TypeError:Henric Smith 是不是一個函數,它是一個字符串。 (行:29,文件:科德) – 2014-09-02 12:48:48

回答

0

我使用嵌入電子表格中的腳本讀取一個標籤,或許可能是你一個很好的起點,在每一個線程每個消息。

我的具體使用案例是記錄我的android手機每次發送或接收文本消息時發送給我的郵件。

因此,只需更改標籤名稱即可,並可能刪除我在消息中添加的數據過濾。由於我有很多數據,因此我設置了一個時間觸發任務管理器,以小批量工作,以避免超出時間限制。

用法很簡單:運行「startSMSLog」,並有幾杯咖啡,直到電子表格中的單元格A1停止爲RED ...就是這樣。

下面

代碼:啓動功能

function startSMSLog(){ 
    var triggerID = ScriptApp.newTrigger('countSMSLogEmails').timeBased().everyMinutes(5).create().getUniqueId(); 
    var thisTrigger = PropertiesService.getScriptProperties().setProperty('thisTriggerSMS',triggerID); 
    PropertiesService.getScriptProperties().setProperty('current thread SMS',0); 
    var sh = SpreadsheetApp.getActive().getSheetByName('SMS'); // change to the name of your sheet 
    sh.getRange('A1').setBackground('red'); 
    countSMSLogEmails(true); 
} 

和「工作」代碼:

function countSMSLogEmails(clearSheet){ 
    var sh = SpreadsheetApp.getActive().getSheetByName('SMS'); 
    var start = Number(PropertiesService.getScriptProperties().getProperty('current thread SMS')); 
    var CallLogThreads = GmailApp.getUserLabelByName('SMS').getThreads(start,10); 
    if(CallLogThreads.length==0){ 
    sh.sort(2,false); 
    sh.getRange('A1').setBackground('#FFC'); 
    var triggers = ScriptApp.getProjectTriggers(); 
    var thisTrigger = PropertiesService.getScriptProperties().getProperty('thisTriggerSMS'); 
    for(var n in triggers){ 
     if(triggers[n].getUniqueId()==thisTrigger){ScriptApp.deleteTrigger(triggers[n])}; 
    } 
    sh.getRange('A1').setValue('Subject (Log on '+Utilities.formatDate(new Date(), Session.getScriptTimeZone(), "dd-MMM-yy HH:mm")+')'); 
    return; 
    } else { 
    PropertiesService.getScriptProperties().setProperty('current thread SMS',start+CallLogThreads.length); 
    } 
    var data = []; 
    for(var n=0;n<CallLogThreads.length;n++){ 
    var thread = CallLogThreads[n]; 
    Logger.log('thread message count = '+thread.getMessageCount()); 
    var msg = thread.getMessages(); 
    var msgData = []; 
    for(var m in msg){ 
     var msgDate = msg[m].getDate(); 
     var msgSubject = msg[m].getSubject(); 
     var msgBody = msg[m].getBody().replace(/[\n\r]/g,' ').replace(/&#39;/g,"'").replace(/&nbsp;/g,"!").replace(/&amp;/g,"&").replace(/&quot;/g,'"') 
     .replace(/&gt;/g,'>').replace(/&lt;/g,'<').replace(/<br \/>/g,'\n').replace(/<br>/g,'\n'); 
     msgData.push([msgSubject,msgDate,msgBody]); 
    } 
    data.push(msgData); 
    } 
    var dataTotal = []; 
    if (clearSheet==true) { 
    dataTotal.push(['subject', 'date', 'message']); 
    } 
    for(var n in data){ 
    dataTotal = dataTotal.concat(data[n]); 
    }; 
    Logger.log(JSON.stringify(dataTotal)); 
    if (clearSheet==true) { 
    sh.clearContents(); 
    sh.getRange(1,1,dataTotal.length,dataTotal[0].length).setValues(dataTotal); 
    }else{ 
    sh.getRange(sh.getLastRow()+1,1,dataTotal.length,dataTotal[0].length).setValues(dataTotal); 
    } 
} 
相關問題