此功能旨在发送有关学生“迟到”次数的电子邮件通知。这是我一直可靠使用的类似功能的改编,但它不起作用。我在设置变量 GradeNameList 时遇到问题。当尝试使用 for 循环和 if 函数来扫描匹配项时,数组的计算结果为 null。我准备了这个样本表。执行该函数时,我希望收到一封电子邮件到“[email protected]”并抄送[email protected]。见解将受到好评。
function likeMessage() {
var mainSheet = SpreadsheetApp.openById('1giEC08YlkXhwIibHt30BdDJmuwwlq9ZzfQdhkQETogo');
var tardyTrackerSheet = mainSheet.getSheetByName('new_tardy_tracker_form_responses');
var tardyTrackerLastRow = tardyTrackerSheet.getLastRow();
var teacher = tardyTrackerSheet.getRange(tardyTrackerLastRow, 2).getValue();
var tardyBlock = tardyTrackerSheet.getRange(tardyTrackerLastRow, 7).getValue();
var grade = tardyTrackerSheet.getRange(tardyTrackerLastRow, 3).getValue();
var gradeColumn; //declared a variable, so we can tweak it next...
var adminTeam = "";
if (grade == "sixth") {
gradeColumn = 3;
adminTeam = "[email protected]";
} else if (grade == "seventh") {
gradeColumn = 4;
adminTeam = "[email protected]";
} else if (grade == "eighth") {
gradeColumn = 5;
adminTeam = "[email protected]";
}
var studentName = tardyTrackerSheet.getRange(tardyTrackerLastRow, gradeColumn).getValue();
var gradeSheet = mainSheet.getSheetByName(grade);
var gradeSheetLastRow = gradeSheet.getLastRow();
var gradeNameList = gradeSheet.getRange(2, 1, (gradeSheetLastRow - 1)).getValues();
var studentRow = 0; //declaring, to use below
var flag = true;
var i;
for (i = 0; i < gradeSheetLastRow; i++) {
if (gradeNameList[i] == studentName) {
studentRow = i + 2;
}
else {
flag = false;
}
}
var emailMessage = "";
var studentId = "";
var studentEmail = "";
var currentTotalTardies = "";
var parentEmails = "";
if (flag){
studentId = gradeSheet.getRange(studentRow, 2).getValues();
studentEmail = studentId +"@lcps.org";
currentTotalTardies = gradeSheet.getRange(studentRow, 19).getValues();
parentEmails = gradeSheet.getRange(studentRow, 20).getValues();
emailMessage = "Dear sir, etc.";
MailApp.sendEmail({
to: studentEmail,
cc: adminTeam,
subject: receivedLikeSubject,
htmlBody: receivedLikeMessage
});
}
}
试试这个方法:
function likeMessage() {
const ss = SpreadsheetApp.getActive();
const msh = SpreadsheetApp.openById('1giEC08YlkXhwIibHt30BdDJmuwwlq9ZzfQdhkQETogo');
const tsh = msh.getSheetByName('new_tardy_tracker_form_responses');
const tshlr = tsh.getLastRow();
const [, teacher, grade, , , , tardyBlock] = tsh.getRange(tshlr, 1, 1, 7).getValues();
const obj = { "sixth": { "column": 3, "team": "[email protected]" }, "seventh": { "column": 4, "team": "[email protected]" }, "eighth": { "column": 5, "team": "[email protected]" } };
const gradeColumn = obj[grade].column;
const adminTeam = obj[grade].team;
var studentName = tsh.getRange(tshlr, gradeColumn).getValue();
var gsh = msh.getSheetByName(grade);
var gshlr = gsh.getLastRow();
var gList = gsh.getRange(2, 1, (gshlr - 1)).getValues().flat();
var srow = 0;
var flag = true;
for (let i = 0; i < gshlr; i++) {
if (gList[i] == studentName) {
srow = i + 2;
}
else {
flag = false;
}
}
var emailMessage = "";
var studentId = "";
var studentEmail = "";
var currentTotalTardies = "";
var parentEmails = "";
if (flag) {
studentId = gsh.getRange(srow, 2).getValue();
studentEmail = studentId + "@lcps.org";
currentTotalTardies = gsh.getRange(srow, 19).getValue();
parentEmails = gsh.getRange(srow, 20).getValue();
emailMessage = "Dear sir, etc.";
MailApp.sendEmail({
to: studentEmail,
cc: adminTeam,
subject: receivedLikeSubject,
htmlBody: receivedLikeMessage
});
}
}