Экспорт электронной почты с ярлыка в Gmail с помощью скрипта приложений

Привет, я пытаюсь экспортировать Emailadresses от отправителей на ярлыке в Gmail, который называется "Suarez". Но он просто работает и никогда не заканчивается, это должно быть около 372 электронных писем. Много ли нужно печатать в журнале?

Вот что я пытаюсь:

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

}
1 ответ

Я использую скрипт, встроенный в электронную таблицу, читает каждое сообщение в каждом потоке в ярлыке, которое, вероятно, может быть хорошей отправной точкой для вас.

Моим конкретным вариантом использования было протоколировать SMS-сообщения, которые мой телефон Android посылает мне как электронные письма каждый раз, когда я отправляю или получаю текстовое сообщение.

Таким образом, это сработает для вас, просто изменив имя метки и, возможно, удалив фильтрацию данных, которую я добавил в сообщении. Поскольку у меня много данных, я настроил диспетчер задач с триггером времени для работы в небольших пучках, чтобы избежать превышения лимита времени.

Использование прост: запустите "startSMSLog" и уделите пару кофе, пока ячейка A1 в электронной таблице не перестанет быть КРАСНЫМ... что это.

Код ниже: функция запуска

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(//g,'\n').replace(//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);
 }
}
</calllogthreads.length;n++){>

licensed under cc by-sa 3.0 with attribution.