2014-09-02 29 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); 
    } 
} 
相关问题