2016-04-13 14 views
0

私はGoogle Apps Scriptで新しく、Googleスプレッドシートにグループタスクリストを作成し、今日仕事が終了すると自動的に人々のリマインダーを送信するスクリプトを作成しました。GAS:リマインダを一人で一度だけ送信する

スクリプトは正常に動作していますが、スクリプトでは今日3つのタスクがあると3つの異なるメールが届くため、改善したいと思います。 1人のメールを1通しか送信できない方法がありますか?

私はしばらくは見ましたが、何も見つかりませんでした。

ありがとうございます!

Spreadsheet pic

function Reminders() { 

    var sheet = SpreadsheetApp.getActiveSheet(); 
    var newEmployee = sheet.getRange("C1").getValue(); 
    var sheetId = SpreadsheetApp.getActiveSpreadsheet().getId(); 
    var EMAIL_SENT = "OUI" 

    var dataRange = sheet.getRange(7, 200, 1, 12) // (sart Row, N° of Rows, Start Column, n° of Columns) 
    var data = dataRange.getValues(); 
    for (var i = 0; i < data.length; ++i) { 
    var row = data[i]; 
    var emailAddress = row[4]; // We look for email adress on colum 5 
    if (emailAddress == "") continue; 

    var subject = "Reminder - you have a task due today for " + newEmployee; 
    var message = row[2]; 
    var joursrestants = row[7]; // We look for days left before task deadline in column 8 
    var statut = row[9]; // We look for task statut in colum 9 


    if (joursrestants == "0" && statut == "A FAIRE") { // if days left before task = 0 AND status = "A FAIRE" : 

     // A. We send a reminder Email 
     MailApp.sendEmail(emailAddress, subject, message, { 
      name: 'Rappel automatique', 
      replyTo: '[email protected]', 
     }); 

     // B. We write in colum 10 that a reminder has been sent 
     sheet.getRange(startRow + i, 9).setValue(EMAIL_SENT) 
     SpreadsheetApp.flush(); 
    } 
    } 
} 

答えて

0

あなたがそれを行うことができますいくつかの方法があります。電子メールが要約情報はあなたが次の行かどうかをチェックしますif文の内側MailAppを入れ、名前でスプレッドシートを並べ替えることができ、それ自体に

message= row[2] + message; 

を追加し、ループ内の文字列を作成して含有させるために

電子メールを送信する場合、別の名前を持っています。

名前で並べ替えたくない場合は、代わりにすべての可能な名前の配列をループすることができます。

関連する問題