前提・実現したいこと
30分以内に受信したgmailの中から、未読かつ特定の送信者のメール内容を、指定アドレスに送信する。
発生している問題・エラーメッセージ
エラーは出ませんが、送信されたメールの中に既読のものがあったり、条件に当てはまるはずの未読メールが送信されていなっかたりします。
該当のソースコード
gas
1function unread_forward() { 2 3 // Gmailから特定条件のスレッドを検索しメールを取り出す 4 //受信日時指定 5 const date = new Date() ;//現在時刻を取得 6 const unixTime = date.getTime();//UNIX TIMEに変換 7 const now = Math.floor(unixTime/1000); //ミリ秒を秒に変換 8 const term = now - 18000; //現在時刻から30分(1800秒)前 9 const termStr = term.toString(); //検索期間を文字列に変換 10 11 //検索条件指定 12 const srchCondition = [ //検索条件を配列で格納 13 'is:unread', 14 'from:hoge@gmail.com' 15 ].join("\u0020"); //半角スペースで連結 16 17 const strTerms = 'after:'+ term +' '+ srchCondition; //検索条件:termの期間に、srchConditionの条件に合致するメール 18 const myThreads = GmailApp.search(strTerms, 0, 30); //条件にマッチしたスレッドを取得 19 const myMsgs = GmailApp.getMessagesForThreads(myThreads); //スレッドからメールを取得する 20 21 22 //転送メール 23 var forwardTo = 'hoge2@gmail.com'; //転送先アドレス 24 var forwardSubject = '転送メール件名'; //転送メール件名 25 var forwardBody = ''; //転送メール本文 26 27 //1スレッドずつ確認 28 for(var i=0; i < myMsgs.length; i++) { 29 30 var messageId = myMsgs[i][0].getId(); //メッセージIdを取得 31 var messageSender = myMsgs[i][0].getFrom(); //最後のメール送信者を取得 32 var messageDate = myMsgs[i][0].getDate(); //メッセージの受信日時を取得 33 var messageSubject = myMsgs[i][0].getSubject(); //メッセージの件名を取得 34 var messageBody = myMsgs[i][0].getPlainBody(); //メッセージの本文を取得 35 forwardBody = 36 'メッセージID : ' + messageId + '\r\n' + 37 '送信者 : ' + messageSender + '\r\n' + 38 '送信日 : ' + messageDate + '\r\n' + 39 '件名 : ' + messageSubject + '\r\n' + 40 '内容 : \r\n' + messageBody + '\r\n' ; //転送用のメッセージ本文を作成 41 42 43 //転送メール送信 44 GmailApp.sendEmail(forwardTo, forwardSubject, forwardBody); 45 } 46 //Logger.log(forwardBody); 47 48 49}
試したこと
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー