Gmailを複数ある検索条件に該当するメールを抽出したいのですが、うまく抽出されません。
検索条件はセルB2からB6に5個入力(文字)でき、その文字に該当する物だけを抽出したいのです。
例えば、検索条件としてある時は「B2に【申込書】、B3に【請求書】、B4に【完了】」と入力し、
その入力した文字がSubjectに含まれている物を抽出したいのです。
また、ある時は、「B2に【申請中】、B3に【承認待ち】」と入力して
その入力した文字がSubjectに含まれている物を抽出したいのです。
抽出先は、10行目から下で、A列は受信日、B列は件名、C列は受信者IDになります。
コード function 複数検索メール取得() { /* Gmailから特定条件のスレッドを検索しメールを取り出す */ //1. 現在のスプレッドシートを取得 var sh = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('メール'); //2. 指定するセルの範囲(B2,B3,B4,B5,B6)を取得 var kw1 = sh.getRange('B2');//keyword1 var kw2 = sh.getRange('B3');//keyword2 var kw3 = sh.getRange('B4');//keyword3 var kw4 = sh.getRange('B5');//keyword4 var kw5 = sh.getRange('B6');//keyword5 var strTerms = ('Subject:(kw1 kw2 kw3 kw4 kw5 To:(ABC@gmail.com) after:2019/3/1'); var myThreads = GmailApp.search(strTerms, 0, 100); var myMsgs = GmailApp.getMessagesForThreads(myThreads);//二次元配列 GmailApp.getInboxThreads var valMsgs = []; /* 各メールから日時、送信元、件名、内容を取り出す */ for(var i=0;i<myMsgs.length;i++){ for(var j=0;j<myMsgs[i].length;j++){ var msid = myMsgs[i][j].getId();//メッセージIDを取得 //もしメッセージIDがスプレッドシートに存在しなければ if(!hasId(msid)){ var date = myMsgs[i][j].getDate(); var subj = myMsgs[i][j].getSubject(); valMsgs.push([date,subj,msid]); } } } /* スプレッドシートに出力 */ if(valMsgs.length>0){//新規メールがある場合、末尾に追加する var lastRow = sh.getDataRange().getLastRow(); sh.getRange(lastRow+1, 1, valMsgs.length, 3).setValues(valMsgs); var sheet = SpreadsheetApp.getActiveSheet(); var lastRow = sheet.getLastRow(); var lastCol = sheet.getLastColumn(); sheet.getRange(10, 1, lastRow, lastCol).sort(1); } } function hasId(id){ var data = sh.getRange(1, 3, sh.getLastRow(),1).getValues();//C列(メッセージID)を検索範囲とする var hasId = data.some(function(value,index,data){//コールバック関数 return (value[0] === id); }); return hasId; }
参考にしたスクリプトは下記のものです。
https://tonari-it.com/gas-gmail-messageid/
どなたか、ご教授を宜しくお願いいたします。
ご提示のコードは java ではありません. 正しいタグに修正して頂けますか.
すみません。超超超初心者で何も分からない状態なんです。手探り状態でやっているので、どんなジャンルになるのかご教授頂けませんでしょうか?
フッターに'タグ一覧'というのがあると思いますので, そちらからお選びください.
jinbe様
ご迷惑おかけいたしました。
ありがとうございます。
>うまく抽出されません。
とありますが、何が抽出されていますか?なにがうまくいっていないのでしょうか。
それがわからないです。
macaron_xxx様
スクリプトを起動させても、何も抽出されず、件数は0(ゼロ)件でした。
ご説明が足りず、大変申し訳ございませんでした。m(__)m

回答2件
あなたの回答
tips
プレビュー