Отправить письмо, когда конкретное значение равно 0 - PullRequest
0 голосов
/ 11 мая 2018

Я делаю планировщик проекта, который отправляет письма, когда конкретное задание не выполнено. Я назначаю выполнено / не выполнено столбец 0 (не выполнено) / 1 (выполнено). Открыть это изображение, чтобы посмотреть на стол

     function checkReminder() {
   // get the spreadsheet object
 var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
 // set the first sheet as active
 SpreadsheetApp.setActiveSheet(spreadsheet.getSheets()[0]);
 // fetch this sheet
var sheet = spreadsheet.getActiveSheet();

// figure out what the last row is
var lastRow = sheet.getLastRow();

// the rows are indexed starting at 1, and the first row
// is the headers, so start with row 11
var startRow = 11;

// grab column 5 (the 'done/not done' column) 
var range = sheet.getRange(11,5,lastRow-startRow,1 );
var numRows = range.getNumRows();
var done_notdone_values = range.getValues();

// Now, grab the reminder name column
range = sheet.getRange(11, 11, lastRow-startRow, 1);
var reminder_info_values = range.getValues();

var warning_count = 0;
var msg = "";

// Loop over the done value values
for (var i = 0; i <= numRows - 1; i++) {
var binary = done_notdone_values[i][0];
if(binary == 0) {
  // if it's exactly 0, do something with the data.
  var reminder_name = reminder_info_values[i][0];

  msg = msg + "->"+reminder_name + " \r\n";
  warning_count++;
}
}

 if(warning_count) {
MailApp.sendEmail("xyz@.com", 
                  "Reminder CCUFC4", msg,{ cc:"abc@gmail.com"});
}

};

Но я получаю почту в этом формате. Я хочу одну точку в одной строке с серийным номером. Как это получить. Что можно сделать? Почтовое изображение

1 Ответ

0 голосов
/ 11 мая 2018

Это потому, что строка sendEmail находится вне цикла, поэтому до окончания цикла цикл var msg продолжает добавляться, а затем, когда он выходит из цикла, значение var warning_count равно 3 и, таким образом, оно отправляет электронное письмо так, как вы указали в изображении.

Пожалуйста, попробуйте код, приведенный ниже, и он должен прекрасно работать:

    // figure out what the last row is
    var lastRow = sheet.getLastRow();

    // the rows are indexed starting at 1, and the first row
    // is the headers, so start with row 11
    var startRow = 11;

    // grab column 5 (the 'done/not done' column) 
    var range = sheet.getRange(11,5,lastRow-startRow,1 );
    var numRows = range.getNumRows();
    var done_notdone_values = range.getValues();

    // Now, grab the reminder name column
    range = sheet.getRange(11, 11, lastRow-startRow, 1);
    var reminder_info_values = range.getValues();

    var warning_count;
    var msg = "";

    // Loop over the done value values
    for (var i = 0; i <= numRows - 1; i++) {
warning_count = 0;// resetting the flag as zero for new row every time
    var binary = done_notdone_values[i][0];
    if(binary == 0) {
      // if it's exactly 0, do something with the data.
      var reminder_name = reminder_info_values[i][0];

      msg = msg + "->"+reminder_name + " \r\n";
      warning_count++;
    }
//moved the condition inside the loop
if(warning_count) {
    MailApp.sendEmail("xyz@.com", 
                      "Reminder CCUFC4", msg,{ cc:"abc@gmail.com"});
    }
    }

    };
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...