前提・実現したいこと
スプレッドシートにまとめている表に記載している件名でGmailを検索し
最後の送信者が表に記載しているアドレス(担当者)ではない場合に
表に記載している定型文を最後のスレッドに全返信する。というプログラムを作成したいです。
表はF列に件名、D列に担当者のアドレス、G列に定型文が記載されています。
発生している問題・エラーメッセージ
エラーが発生していないのに、Gmailの返信が確認できない状況です。
該当のソースコード
function mailreplyAll() { //参照するシート var spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); var sheet = spreadsheet.getSheetByName("参照するシート名"); // シートの取得 //繰り返し用 var last_row = sheet.getLastRow(); //最後の行を取得 var begin_row = 2; // 処理を開始する行 //最後の送信者確認用 var threads = GmailApp.search(query); //条件に合致するメールのスレッドを取得 var messages = GmailApp.getMessagesForThreads(threads); //スレッド内のメールを取得。[スレッド番号][メッセージ番号]の2次元配列になる for(var i = begin_row; i <= last_row; i++) { //検索条件 var sell1 = "F"+i; var value1 = sheet.getRange(sell1).getValue();//件名を参照 var query = 'subject:' + value1; //検索条件 //最後の送信者がこのアドレス(自分)に合致していないものは未返信とする var sell3 = "D"+i; var value3 = sheet.getRange(sell3).getValue(); var myMailAddress = value3; //リマインド用の本文 var sell2 = "G"+i; var value2 = sheet.getRange(sell2).getValue(); var forwardBody = value2; //最後のスレッドの送信者を確認 for(var i=0; i < messages.length; i++) { var lastNum = messages[i].length-1; //スレッドの最後のメールのインデックスを取得(indexは0から始まるから-1する) Logger.log('やり取り数:'+ lastNum); var lastSender = messages[i][lastNum].getFrom(); //最後のメールの送信者を取得 Logger.log('最後の送信者:'+ lastSender); //未返信判定 if(lastSender.indexOf(myMailAddress) == -1) //indexOfは文字列に指定した文字が含まれていない場合は戻り値が-1となる //未返信の場合は全返信 var firstThread = GmailApp.getInboxThreads(0,1)[0]; firstThread.replyAll(forwardBody); } } }
試したこと
下記のコードでも返信を試みましたが、返信が確認できませんでした。
reply(body) 返信先アドレスを使用して、このメッセージの送信者に返信します。 reply(body, options) オプションの引数を指定した返信先アドレスを使用して、このメッセージの送信者に返信します。 replyAll(body) このメッセージの返信先アドレスとすべての受信者を使用して送信者に返信します。 replyAll(body, options) オプションの引数を指定して、返信先アドレスとすべての受信者を使用して、このメッセージの送信者に返信します。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2020/07/15 10:20
2020/07/15 23:16
退会済みユーザー
2020/07/16 02:42
2020/07/16 06:20