Javascript 如果新联系人获得地址、主题、消息

Javascript 如果新联系人获得地址、主题、消息,javascript,google-apps-script,gmail,google-contacts-api,Javascript,Google Apps Script,Gmail,Google Contacts Api,我需要一个谷歌脚本程序,告诉我,如果我有一个电子邮件地址在我的联系人或没有 我每天都收到许多来自供应商的电子邮件,其中许多是全新的联系人。我需要一个只列出新联系人的程序,这样我就可以决定添加哪个联系人组 我正在寻找的基本结构: 将每5分钟运行一次此程序(我可以设置。) 然后,我将手动浏览这些信息,以决定将它们放入哪个组 谢谢你的帮助 更新////3 这就是我要说的。这是断断续续的。一次我运行它,它工作,另一次它不。真烦人。如果有人能看到任何突出的问题,请告诉我。特别难以让if-sndr和if-r

我需要一个谷歌脚本程序,告诉我,如果我有一个电子邮件地址在我的联系人或没有

我每天都收到许多来自供应商的电子邮件,其中许多是全新的联系人。我需要一个只列出新联系人的程序,这样我就可以决定添加哪个联系人组

我正在寻找的基本结构:

将每5分钟运行一次此程序(我可以设置。)

然后,我将手动浏览这些信息,以决定将它们放入哪个组

谢谢你的帮助

更新////3

这就是我要说的。这是断断续续的。一次我运行它,它工作,另一次它不。真烦人。如果有人能看到任何突出的问题,请告诉我。特别难以让if-sndr和if-rcpnt返回false来运行程序的其余部分。我试过20种方法

//http://webapps.stackexchange.com/questions/9813/get-e-mail-addresses-from-gmail-messages-received
/////////////NESTED LOOP METHOD





function newEmailAddressList(){

 var ss = SpreadsheetApp.getActiveSpreadsheet();
 var sheet = ss.getSheetByName("NewEmails");
 var range = sheet.getRange("A2:BA");
 var addrA;

 range.clearContent(); //May need to change this to my delete function to speed things up.

 var contact = ContactsApp.getContacts();

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

    var addrA = [];
    var start;
    var addresses = contact[i].getEmails();
    for(var j = 0;j < addresses.length;j++){



      addrA.push(addresses[j].getAddress()); 

    }; 

};
 sheet.getRange('H1').setValue("List Created");



 for (var i=0; i<50; i++){
 var threads = GmailApp.getInboxThreads(0,50)[i];
 var messages = threads.getMessages()[0];

      var sndr = messages.getFrom().replace(/^.+<([^>]+)>$/, "$1"); //http://stackoverflow.com/questions/26242591/is-there-a-way-to-get-the-specific-email-address-from-a-gmail-message-object-in
      var rcpnt = messages.getTo().replace(/^.+<([^>]+)>$/, "$1");


     function contains(addrA, sndr) {
    for (var i = 0; i < addrA.length; i++) {
        if (addrA[i] === sndr) {
            sheet.appendRow("Emails Match");
        }else{



      var dat = messages.getDate();
      //var sndr = messages.getFrom();
      //var rcpnt = messages.getTo();
      var sub = messages.getSubject();
      var msg = messages.getPlainBody();


      var info = [dat,sndr,rcpnt,sub,msg];

 sheet.appendRow(info); //appendRow only works with sheet class not range class

};

};

};

};

};
//http://webapps.stackexchange.com/questions/9813/get-e-mail-addresses-from-gmail-messages-received
/////////////嵌套循环法
函数newEmailAddressList(){
var ss=SpreadsheetApp.getActiveSpreadsheet();
var sheet=ss.getSheetByName(“新邮件”);
var范围=sheet.getRange(“A2:BA”);
var addrA;
range.clearContent();//可能需要将其更改为my delete函数以加快速度。
var contact=ContactsApp.getContacts();
对于(var i=0;i$/,“$1”);
函数包含(addrA、sndr){
对于(变量i=0;i
好吧,我给你一个开始。请记住,我过去从未真正使用过GmailApp,因此所有这些信息对于打开代码编辑器、单击“帮助”然后单击“API引用”的人来说都非常容易获得。你需要知道的关于谷歌脚本的一切都是有组织的。自从几年前我第一次查看文档以来,他们确实改进了文档

因此,我给你一些功能,将获得你所有的联系电子邮件,从你的收件箱和电子邮件的电子邮件

function myContacts()
{
  var s = '';
  var br = '<br />';
  var contact = ContactsApp.getContacts();
  for(var i = 0;i < contact.length;i++)
  {
    var addrA = [];
    var addresses = contact[i].getEmails();
    for(var j = 0;j < addresses.length;j++)
    {
      s += addresses[j].getAddress() + br;
      addrA.push(addresses[j].getAddress());
    }
  }
  dispStatus('Contact Emails',s, 800, 400);
}

function MyFroms()
{  
  var threads = GmailApp.getInboxThreads();
  var s = '';
  for(var i = 0; i < threads.length; i++) 
  {
    var msg = threads[i].getMessages();
    for(var j = 0; j < msg.length;j++)
    {
      s += msg[j].getFrom() + '<br />';
    }
  }
  dispStatus('My Messages', s , 800 , 400);  
}

function MyMessages()
{  
  var threads = GmailApp.getInboxThreads();
  var s = '';
  for(var i = 0; i < threads.length; i++) 
  {
    var msg = threads[i].getMessages();
    for(var j = 0; j < msg.length;j++)
    {
      s += 'Message' + j+1 + '<br />';
      s += msg[j].getFrom() + '<br />';
      s += msg[j].getBody() + '<br />';

    }

  }
  dispStatus('My Messages', s , 800 , 400);  
}

function dispStatus(title,html,width,height)
{
  var title = typeof(title) !== 'undefined' ? title : 'No Title Provided';
  var width = typeof(width) !== 'undefined' ? width : 800;
  var height = typeof(height) !== 'undefined' ? height : 400;
  var html = typeof(html) !== 'undefined' ? html : '<p>No html provided.</p>';
  var htmlOutput = HtmlService
     .createHtmlOutput(html)
     .setWidth(width)
     .setHeight(height);
 SpreadsheetApp.getUi().showModelessDialog(htmlOutput, title);
} 
函数myContacts()
{
var s='';
var br='
'; var contact=ContactsApp.getContacts(); 对于(变量i=0;i'; } } dispStatus(“我的消息”,s,800,400); } 函数MyMessages() { var threads=GmailApp.getInboxThreads(); var s=''; 对于(var i=0;i'; s+=msg[j].getFrom()++'
'; s+=msg[j].getBody()++'
'; } } dispStatus(“我的消息”,s,800,400); } 函数dispStatus(标题、html、宽度、高度) { var title=typeof(title)!=“未定义”?title:“未提供标题”; 变量宽度=类型(宽度)!=“未定义”?宽度:800; 变量高度=类型(高度)!=“未定义”?高度:400; var html=typeof(html)!=“未定义”?html:“未提供html。

”; var htmlOutput=HtmlService .createHtmlOutput(html) .setWidth(宽度) .设置高度(高度); SpreadsheetApp.getUi().showModelessDialog(htmlOutput,标题); }

这不是一个完整的答案。但希望它能鼓励你全身湿透,锻炼你的精神肌肉,让我们至少了解一个可以帮助你跑步的程序的部分工作框架。

这第一段代码我不知道如何编写。我没有收到任何错误,它只是运行,什么也不做。您是否在与电子表格关联的代码编辑器中运行它?是的,我必须编辑它才能在电子表格中工作,因为完成后我必须手动处理结果。我对数组有问题,所以如果我不将它打印出来,我永远不知道背景中发生了什么。刚做了上面的这些更新。当你最初运行代码时,你正在查看排列并从“创建我的工具”菜单运行代码。如果您在编辑器中运行代码,它将运行并显示无模式对话框,但您不会看到它,因为它位于编辑器后面。你所看到的只是电子表格选项卡图标闪烁,告诉你电子表格上发生了什么。我从脚本编辑器中运行了4个函数中的每一个。我给你的第一个代码有效,它确实显示了来自地址和联系人地址的电子邮件。它们在非模态对话框的白色背景上向下滚动。但在运行电子表格时,您必须查看电子表格。这就是为什么我总是把它们放在我的工具菜单里。这样我就可以
function myContacts()
{
  var s = '';
  var br = '<br />';
  var contact = ContactsApp.getContacts();
  for(var i = 0;i < contact.length;i++)
  {
    var addrA = [];
    var addresses = contact[i].getEmails();
    for(var j = 0;j < addresses.length;j++)
    {
      s += addresses[j].getAddress() + br;
      addrA.push(addresses[j].getAddress());
    }
  }
  dispStatus('Contact Emails',s, 800, 400);
}

function MyFroms()
{  
  var threads = GmailApp.getInboxThreads();
  var s = '';
  for(var i = 0; i < threads.length; i++) 
  {
    var msg = threads[i].getMessages();
    for(var j = 0; j < msg.length;j++)
    {
      s += msg[j].getFrom() + '<br />';
    }
  }
  dispStatus('My Messages', s , 800 , 400);  
}

function MyMessages()
{  
  var threads = GmailApp.getInboxThreads();
  var s = '';
  for(var i = 0; i < threads.length; i++) 
  {
    var msg = threads[i].getMessages();
    for(var j = 0; j < msg.length;j++)
    {
      s += 'Message' + j+1 + '<br />';
      s += msg[j].getFrom() + '<br />';
      s += msg[j].getBody() + '<br />';

    }

  }
  dispStatus('My Messages', s , 800 , 400);  
}

function dispStatus(title,html,width,height)
{
  var title = typeof(title) !== 'undefined' ? title : 'No Title Provided';
  var width = typeof(width) !== 'undefined' ? width : 800;
  var height = typeof(height) !== 'undefined' ? height : 400;
  var html = typeof(html) !== 'undefined' ? html : '<p>No html provided.</p>';
  var htmlOutput = HtmlService
     .createHtmlOutput(html)
     .setWidth(width)
     .setHeight(height);
 SpreadsheetApp.getUi().showModelessDialog(htmlOutput, title);
}