2017-04-24 28 views
1

未解決のレポートを持つマネージャに毎週電子メールを送信しようとしています。コードでは、リマインダを送信するときに列「E」のセルの値を考慮に入れるだけです。私が使用しているコードはインターネット上のさまざまなソースから貼り付けられていますが、エラーなしで実行されますが、条件が満たされても電子メールは送信されません。私は大いに助けていただければ幸いです。セルの値に基づいて電子メールを送信する

"Area Managers"シートには、使用されているデータがあります。

そして、これはコードで私の試みです:

function sendEmails() { 

var sSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Area Managers"); 
var range = sSheet.getDataRange(); 
var column = 4; 
var cValues = Number(sSheet.getRange(2, column, sSheet.getLastRow()).getValue()); 

    var startRow = 2; 
    var numRows = sSheet.getLastRow()-1; 
    var dataRange = sSheet.getRange(startRow, 1, numRows, 2) 
    var data = dataRange.getValues(); 

    for (i in data) { 
    var row = data[i]; 

    if(row[5] >= 0) { 
    range = range.offset(1, 0, range.getNumRows()-1); 
    range.getValues().forEach(function(recipient, key, data) { 
    var body = "Good day "+ recipient[0] + " you have " + recipient[4] + " Internal Audit reports outstanding."; 
    GmailApp.sendEmail(recipient[0] +"<"+recipient[1]+">","Outstanding Internal Audit Reports", body); 
    })}}; 
} 

答えて

0

あなたのコードは少し厄介です。

function sendEmails() { 
    var sSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Area Managers"); //get the sheet "Area Managers" 
    var data = sSheet.getRange(2, 1, sSheet.getLastRow(), sSheet.getLastColumn()).getValues(); //get the values of your table, without the header 

    for (var i = 0; i < data.length; i++) { // For each element of your tab 

    var row = data[i]; 

    if(row[5] > 0) { // If the person have got at least 1 report outstanding (column E) 

     var body = "Good day "+ row[0] + " you have " + row[5] + " Internal Audit reports outstanding."; 
     GmailApp.sendEmail(row[1],"Outstanding Internal Audit Reports", body); // Sending a mail to alert 

    } 
    } 
} 

コードがコメントであるあなたがプロセスを理解することができるように

PS:あなたはクォータに注意する必要がありますあなたはuse.Hereがあなたの問題の単純なソリューションですしていないいくつかの変数を宣言しますGmailAppメール送信(see here)を送信すると、メールが多すぎるとブロックされる可能性があります。

関連する問題