Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Email 使用应用程序脚本从Gmail中的标签导出电子邮件地址_Email_Google Apps Script - Fatal编程技术网

Email 使用应用程序脚本从Gmail中的标签导出电子邮件地址

Email 使用应用程序脚本从Gmail中的标签导出电子邮件地址,email,google-apps-script,Email,Google Apps Script,嗨,我正试图将发件人的电子邮件地址导出到Gmail中一个名为“Suarez”的标签中。但它只是在运行,从未完成,应该有372封电子邮件。要打印到日志记录程序是否太多 以下是我所尝试的: function getEmailsadresses(){ var threads = GmailApp.search("in:suarez"); for (var i = 0; i < threads.length; i++) { var messages = threads[i].getMes

嗨,我正试图将发件人的电子邮件地址导出到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

}
函数getEmailsAddresses(){ var threads=GmailApp.search(“in:suarez”); 对于(var i=0;i我使用嵌入电子表格的脚本读取标签中每个线程中的每条消息,这可能是您的一个良好起点

我的特定用例是记录我的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);
}
和“工作”代码:

函数计数SlogeMails(clearSheet){
var sh=SpreadsheetApp.getActive().getSheetByName('SMS');
var start=Number(PropertiesService.getScriptProperties().getProperty('current thread SMS');
var CallLogThreads=GmailApp.getUserLabelByName('SMS').getThreads(开始,10);
if(CallLogThreads.length==0){
sh.sort(2,false);
sh.getRange('A1')。收进背景('FFC');
var triggers=ScriptApp.getProjectTriggers();
var thisTrigger=PropertiesService.getScriptProperties().getProperty('thisTriggerSMS');
for(触发器中的变量n){
如果(触发器[n].getUniqueId()==thisTrigger){ScriptApp.deleteTrigger(触发器[n])};
}
sh.getRange('A1').setValue('Subject(登录'+Utilities.formatDate(new Date(),Session.getScriptTimeZone(),“dd-MMM-yy-HH:mm”)+);
返回;
}否则{
PropertiesService.getScriptProperties().setProperty('current thread SMS',start+CallLogThreads.length);
}
var数据=[];

for(var n=0;n')。replace(//g,'It't't't that…您应该在'for'循环中放置一个断点,并检查'messages'是否包含一个包含电子邮件对象的数组。我想我有点了解您,您知道如何放置它吗?我将第一行更改为:var threads=GmailApp.getUserLabelByName('suarez')。getThreads(1,10);现在它似乎找到了地址,但我得到了一个错误:TypeError:Henric Smith不是一个函数,而是一个字符串
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);
  }
}