Я пытаюсь создать сценарий, который просматривает электронную таблицу данных учащихся по одной строке за раз и отправляет электронное письмо учащемуся и его родителю, если оценка учащегося меньше 60. Столбцы в электронной таблице: Идентификатор учащегося, Имя учащегося, Адрес электронной почты учащегося, адрес электронной почты родителей, оценка. В таблице 30 строк - я предполагаю использовать до 25 из них, а остальные оставить пустыми. Некоторые поля родительского адреса электронной почты останутся пустыми, это учтено в коде. У всех студентов есть адреса электронной почты.
На самом деле сценарий работает нормально, за исключением того, что он не всегда выполняет все необходимые итерации. Он останавливается каждый раз после разного количества итераций - иногда он делает их все, но обычно это не так. Когда он останавливается, не происходит никаких ошибок или чего-либо еще, он просто перестает выскакивать окнами сообщений или отправлять электронные письма студентам.
Есть идеи, почему он перестает работать до выполнения всех строк?
Вот код:
function onOpen(){
loadMenu();
}
function loadMenu() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
ss.addMenu("F-Watch Emailer", [{"name":"Send Emails", "functionName":"sendEmails"}]);
}
function sendEmails() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
var range = sheet.getRange("B2:E30");
var data = range.getValues();
//Browser.msgBox(data);
for (var i = 0; i < 30; i++){
//set variables
var row = data[i];
var emailAddress = row[1];
var parentEmailAddress = row[2];
var grade = row[3];
Browser.msgBox("email = "+emailAddress);
//email student if necessary, return true or false
if(emailAddress !== ""){
var emailSent = sendStudentEmail(emailAddress, grade);
}
else{
//Browser.msgBox("Student Email Field " + (i + 1) + " is Empty");
}
//email parent if necessary, return true or false
if(parentEmailAddress !== ""){
var parentEmailSent = sendParentEmail(parentEmailAddress, grade);
}
else{
//Browser.msgBox("Parent Email Field " + (i + 1) + " is Empty");
}
}
}
function sendStudentEmail(emailAddress, grade){
if(grade < 60){
var subject = "Weekly F-Watch Email for Mr. Lipson's Class";
var body = "Attention Students: If you are receiving this automated email, your term grade is currently below 60. Please check iPass and speak to me to make up any late assignments (please refer to my Late Work Policy). If you have any questions, feel free to email me.Have a good day, - Mr. L Note: This is the first in a weekly series of automated emails, and it's in beta. Please forgive any formatting issues. Also, beginning next week, this email will be sent to parents/guardians as well.";
//MailApp.sendEmail(emailAddress, subject, body);
//Browser.msgBox("Email sent to " + emailAddress);
return true;
}
else{
//Browser.msgBox("Email not sent to " + emailAddress);
return false;
}
}
function sendParentEmail(parentEmailAddress, grade){
if(grade < 60){
var subject = "Weekly F-Watch Email for Mr. Lipson's Class";
var body = "Parent Email Text";
//MailApp.sendEmail(emailAddress, subject, body);
//Browser.msgBox("Email sent to " + parentEmailAddress);
return true;
}
else{
//Browser.msgBox("Email not sent to " + emailAddress);
return false;
}
}