google 脚本数组计算结果为空

问题描述 投票:0回答:1

此功能旨在发送有关学生“迟到”次数的电子邮件通知。这是我一直可靠使用的类似功能的改编,但它不起作用。我在设置变量 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
      });
  }     
}
google-sheets google-apps-script
1个回答
0
投票

试试这个方法:

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
    });
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.