Это потому, что строка 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"});
}
}
};