2017-03-02 7 views
-1

連絡先に電子メールアドレスがあるかどうかを示すgoogleスクリプト用のプログラムが必要です。新しい連絡先がアドレス、件名、メッセージを取得する場合

私は毎日ベンダーから多くのメールを受け取り、それらの多くは完全に新しい連絡先です。新しい連絡先だけのリストを作成するプログラムが必要なので、追加する連絡先グループも決めることができます。私が探しているものの

基本構造:

がこのプログラムに5分ごとに(私はそれを設定することができます)

-Checks emails with yellow or blue star for email address of recipient and sender. filters out my email address. 

-Checks the email address against all my contacts. If the email address does not appear in my google contacts I need: 

Email address, subject line, message text, additional thread message, additional thread message... in seperate columns in a spreadsheet. 

を実行します私はその後を決めるために手動でこの情報を通過しますどのグループに入れてもいいですか。

ありがとうございました!私がでてるところ////////////////////////////// update.3

UPDATEがここにあります。これはオンとオフで動作しています。私はそれを動作させると、もう一度それは動作しません。本当に迷惑。誰かが悩ましい問題を見ることができるなら私に知らせてください。特にsndrを取得するのは難しく、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 

}; 

}; 

}; 

}; 

}; 
+0

私があなたに与えた最初のコードは、アドレスと連絡先のアドレスから電子メールを表示します。モードレスダイアログの白い背景にスクロールします。しかし、スプレッドシートを実行するときは、スプレッドシートを見なければなりません。そのため、私はいつもそれらをMy Toolsメニューに入れています。私は何が起こっているかを見ることができます。 Logger.log()の表示よりも好きです。 – Cooper

+0

配列は単なるjavascript配列です。そこにはたくさんのJavascriptチュートリアルがあります。 [Here's](https://developer.mozilla.org/en-US/docs/Web/JavaScript/A_re-introduction_to_JavaScript)私はたくさん行く場所です。 range.getValueとrange.setValueを扱うことにはいくつかの特有の問題があり、最初の数回の演奏では苦労します。配列と範囲が同じサイズであることを確認しなければなりません。範囲が1から始まり、配列が0から始まることがさらに悪くなります。 – Cooper

答えて

0

さて、私はあなたに始めましょう。また、私は過去にGmailAppで実際に作業したことがないので、この情報はすべて、コードエディタを開いてヘルプをクリックし、APIリファレンスをクリックした人がすぐに利用できるようになっています。 Google Scriptsについて知っておく必要があるものはすべて、それまでと同様に整理されています。私は数年前に初めてそれを見て以来、実際にドキュメントを改善しました。

私はあなたの連絡先電子メール、受信トレイからの電子メール、および電子メールをすべて取得するいくつかの機能を提供しています。

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); 
} 

完全な回答ではありません。しかし、うまくいけば、あなたの足を濡らして精神的な筋肉を鍛え、少なくとも部分的に働くスケルトンのプログラムを取り戻すことをお勧めします。

+0

この最初のコード私はそれを書く方法がありません。私はエラーもなく、ただ走って何もしません。 – Clayten

+0

スプレッドシートに関連付けられているコードエディタで実行していますか? – Cooper

+0

はい、完了したら結果を手動で処理する必要があるので、スプレッドシートで動作するように編集する必要がありました。私は配列に問題があるので、シートで印刷しないとバックグラウンドで何が起こっているのか分かりません。上記の更新を行っただけです。 – Clayten

関連する問題