好的,我是老师,我已经制作了一份谷歌表格,要求提供一段时间,作业和截止日期。在那之后,我可以选择学生向家长发送电子邮件回家(对于迟到的作业,孩子们会讨厌它,我确定)。
我的脚本问题只与#34中的第一场比赛匹配;如果"声明。这是正在发生的事情:
上图显示了回复。电子邮件模板使用期间,分配和截止日期单元格来发送电子邮件。 (有效)脚本使用"学生"中的电子邮件。细胞
接下来,该脚本使用上面的工作表创建值数组。循环开始于"学生的第一个电子邮件地址"表单响应表中的单元格(第一个)。然后,嵌套循环遍历名单中的学生电子邮件并尝试匹配电子邮件。找到匹配项后,将收集父电子邮件并用于发送电子邮件。
这是我的代码!
function homeworkEmail() {
var lastRow = sheet1.getLastRow();
var emailArray = "";
for (c=4; c<=9; c+=1) { //begin array starting with P1 column and end with P6 column
var students = sheet1.getRange(lastRow,c).getValue();
if (students) {
var sendToStudents = students.split(',');
}
}
var period = sheet1.getRange(lastRow,3).getValue(); //Value of period column (3)
var assignment = sheet1.getRange(lastRow,10).getValue(); //Value of assignment column (10)
var due = sheet1.getRange(lastRow,11).getValue(); //Value of due date column (11)
var allRosterValues = sheet2.getDataRange().getValues();
for (s=0; s < sendToStudent.length; s++) { //start loop through students array to send
var student = sendToStudents[s].replace(/\s+/g, '');
for (r=1; r < sheet2.getLastRow(); r++) { //start loop across entire roster sheet
var studentInRoster = allRosterValues[r][2].replace(/\s+/g, '');
if (String(sendToStudents[s]) == String(allRosterValues[r][2])) { //look for student email in array to match roster list
Logger.log("SEND EMAIL HERE");
break;
}
}
}
}
问题是,这个if语句总是捕获第一个电子邮件匹配并且有效,但之后的所有其他电子邮件(因此表单中的第二封电子邮件,sendToStudent [s] ...)从不匹配。我开始直接在if语句中声明所有内容,现在已经为每个希望可能有效的步骤声明了单独的var。我已将它们打印出来,可以直接看到电子邮件字符串如何匹配100%,没有空格或任何东西,它只是通过它。我已检查过它们是否匹配类型,甚至删除了空格并用&#34;&#34;打印出来。之前和之后检查长度。它全是小写的,我已经将案例改为小写只是为了检查。它甚至记录了#34;不匹配&#34;当我使用else语句检查事物时,它实际上正在运行if语句而没有识别匹配。我完全失去了!
答案 0 :(得分:0)
如JAZ所述,剥离变量就可以解决问题。