実現したいこと
自動メールにて期限通知アラートを実現したいです。
条件
パスの対象
①C列が【印鑑済み】または、E列が【コピー済み】の行
②期限またはモニター日が本日含め30日以内でない行
自動メール通知アラート対象
①赤色またはオレンジ色が含まれる列がある行
ーーーーーーーーーーーー
スプレッドシート上で顧客の情報を管理しています。
赤が期限切れ、オレンジが期限間近。
C列とE列はそれぞれ左隣の日付に対しての進捗状況を表しています。
色が赤、もしくはオレンジになっている行のA列からE列の内容を期限通知アラートメールとして
自動でメールを送りたいと思ってます。
メールを1件ずつではなく
条件に当てはまる行のA列からE列を
そのまま本文にしてひとまとめのですが、
for文で繰り返すプログラムの中で
まとめて本文にするところでとまっています。
ぜひ教えていただけると助かります。
発生している問題・エラーメッセージ
1行に対してメールが1件ごとに作成されてしまう。 上記の条件分岐のコードの組み方がわからない
試したこと
for文からメール送信につなげる
function mailAlerts2() { //シートを取得 var bk = SpreadsheetApp.getActiveSpreadsheet(); var sh = bk.getSheetByName("シート1 のコピー のコピー"); var last_row = sh.getLastRow(); //最後の行を取得(繰り返し処理の回数) // Logger.log(last_row); var begin_row = 2; // 処理を開始する行 (1行目は項目名なので2から) //今日の日付を取得し文字列を成型する var today = new Date(); // Logger.log(today); var formatDate = Utilities.formatDate(today, "JST","yyyy/MM/dd"); // Logger.log(formatDate); // 完了の水色カラーコード var formatColer = "#00ffff"; // Logger.log(formatColer); // 期限間近のオレンジ var formatColer1 = "#ff9900"; // 期限切れの赤 var formatColer2 = "#ff0000"; コード//繰り返し処理(1行づつ処理し、行の数だけ繰り返す) for(var i = begin_row; i <= last_row; i++) { //それぞれのセルの中身を取得していく //名簿を取得 var sell0 = "A"+i; var name = sh.getRange(sell0).getValue(); // 期限のまとめ //日を取得 var sell1 = "B"+i; var value1 = sh.getRange(sell1).getValue(); var value1 = Utilities.formatDate(value1, "JST","yyyy/MM/dd"); //B列の背景カラーを取得 var Ecoler4 = "B"+i; var Ecoler45 = sh.getRange(Ecoler4).getBackgrounds(); // Logger.log(Ecoler45); //Cの進捗を取得 var sell3 = "C"+i; var value3 = sh.getRange(sell3).getValue(); // Logger.log(value3); //進捗の背景カラーを取得 var Ecoler = "C"+i; var Ecoler2 = sh.getRange(Ecoler).getBackgrounds(); // Logger.log(Ecoler2); // モニター日の取得 var sell2 = "D"+i; var value2 = sh.getRange(sell2).getValue(); var value2 = Utilities.formatDate(value2, "JST","yyyy/MM/dd"); // Logger.log(value2); //モニター日の背景カラーを取得 var Ecoler8 = "D"+i; var Ecoler85 = sh.getRange(Ecoler8).getBackgrounds(); // Logger.log(Ecoler85); //モニタリングの進捗を取得 var sell4 = "E"+i; var value4 = sh.getRange(sell4).getValue(); // Logger.log(value4); //モニタリングの背景カラーを取得 var Gcoler = "E"+i; var Gcoler2 = sh.getRange(Gcoler).getBackgrounds(); // Logger.log(Gcoler2); //もし、今日の日付と納期が同じで、なおかつ状況が完了でない場合メールを送る if(formatColer != Ecoler2){ var one = []; one.push([name,value1,value3,value2,value4]); GmailApp.sendEmail('xxxxxxxxxx@gmail.com', '【期限アラート】',one);
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/05/11 02:29