実現したいこと
スプレッドシートで〆切案件の管理をしているので
未完了に対してのみ自動でメールを配信されるようにしたい。
出来ているところ
・スプレッドに宛先リスト(件名・宛先・差込データ)と本文のシートをそれぞれ作成しています。
・現状その宛先リストと本文を用いてスクリプトを作成し自動メール配信はできるようになっています。
なので後は完了未完了のフラグをつけて
未完了であればメール配信、完了であれば配信しない。というスクリプトを作成すれば1次完成になります。
できていないところ
メール配信の「sendmail」の前に以下をスクリプトを付けて配信をすると
表の一番上が未配信だったらすべての表の人にメールが配信されてしまい
逆に一番上が配信済の状態だと、だれにも配信されない状態になってしまいます。
for(var x =11;x<lastcolumn;x++){
var Flag =myValues[2][x];
if(Flag !==1){
ーーー
12列目に未完了Flagを付けて”1”以外であれば配信とする。
このfor分の箇所以外を除けばメール配信はされるので条件のところさえあえば
区別してメール配信できるようになると思いますがうまくいかずに、投稿させていただきます。
function sendMail() { //------------- (1)宛先リストから処理対象の行数を取得 ----------------------- var book = SpreadsheetApp.getActiveSpreadsheet(); // スプレッドシート(MS Excelで言う所のブック)を取得 var sheetAtesakiList = book.getSheetByName("宛先リスト"); // 宛先リストシートを取得 var datRange = sheetAtesakiList.getDataRange(); // データが入力されている範囲を取得 var myValues = datRange.getValues(); //指定した範囲の値を格納 var numRows = datRange.getNumRows(); // 処理対象の行数を取得 var lastcolumn = sheetAtesakiList.getLastColumn(); // 処理対象の最終列を取得 var lastRow = sheetAtesakiList.getLastRow(); // 処理対象の最終列を取得 //------------- (2)メール本文の情報を取得 ----------------------- var sheetMailHonbun = book.getSheetByName("メール本文"); // メール本文シートを取得 var subject = sheetMailHonbun.getRange(2, 3).getValue();// メール件名を取得 var body = sheetMailHonbun.getRange(4, 3).getValue(); // メール本文を取得 var start = sheetAtesakiList.getRange(1, 5).getValue(); // 処理を開始する行番号を取得 //------------- (3)メール送信処理 ----------------------- for (var i = start;i <= numRows;i++) { // 対象行の差込データを取得 var sasikomiData1 = sheetAtesakiList.getRange(i, 6).getValue(); var sasikomiData2 = sheetAtesakiList.getRange(i, 7).getValue(); var sasikomiData3 = sheetAtesakiList.getRange(i, 8).getValue(); var sasikomiGoSubject = subject; var sasikomiGoBody = body; // 差込データ1が入力されている場合は、差込処理を行う(件名+本文) if (sasikomiData1 != "") { sasikomiGoSubject = sasikomiGoSubject.replace("{{差込データ1}}", sasikomiData1, "g"); sasikomiGoBody = sasikomiGoBody.replace("{{差込データ1}}", sasikomiData1, "g"); } // 差込データ2が入力されている場合は、差込処理を行う if (sasikomiData2 != "") { sasikomiGoSubject = sasikomiGoSubject.replace("{{差込データ2}}", sasikomiData2, "g"); sasikomiGoBody = sasikomiGoBody.replace("{{差込データ2}}", sasikomiData2, "g"); } // 差込データ3が入力されている場合は、差込処理を行う if (sasikomiData3 != "") { sasikomiGoSubject = sasikomiGoSubject.replace("{{差込データ3}}", sasikomiData3, "g"); sasikomiGoBody = sasikomiGoBody.replace("{{差込データ3}}", sasikomiData3, "g"); } // 対象行の宛先を取得 var to = sheetAtesakiList.getRange(i, 2).getValue(); var cc = sheetAtesakiList.getRange(i, 3).getValue(); var bcc = sheetAtesakiList.getRange(i, 4).getValue(); for(var x =11;x<lastcolumn;x++){ var Flag =myValues[2][x]; if(Flag !==1){ MailApp.sendEmail(to,sasikomiGoSubject,sasikomiGoBody,{cc:cc,bcc:bcc}); } // 配信状態を設定 sheetAtesakiList.getRange(i, 5).setValue("配信済"); }} }
ご確認いただければ幸いです。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/11/19 01:29
2018/11/19 08:25
2018/11/26 02:49