首页 > 解决方案 > 具有命名值的 Googlescript 代码不起作用

问题描述

我正在尝试向我的学生发送一封自动电子邮件,其中包含有关课程作业的反馈。我开发了一个带有标记方案的谷歌表格,我在其中输入了学生编号,但脚本不读取命名值方法。

我试图一一做学生号和它工作的其余代码。

代码如下:

    function sendNotification(e){
    var s = SpreadsheetApp.getActiveSheet();
    var message = "";
    var headers =s.getRange(1,1,1,s.getLastColumn()).getValues()[0];

    message += "This automated email includes the marks and feedback for    
    your Main report Assignment.\n\n";

    var studentNumber = e.namedValues[headers[3]].toString();   
    Logger.log("column 3: " + studentNumber);

    message += "Student Number: " + studentNumber + "\n\n";

    var recipients = studentNumber + "@email.com";
    var subject = "Test Email";

    MailApp.sendEmail(recipients, subject, message);
    }

我希望能够从谷歌表单中收集学生电子邮件,该表单已保存在表单所附电子表格的第 3 列中。

标签: google-apps-scriptgoogle-forms

解决方案


对不起,我的回答有点匆忙,因为我真的要离开了。(就像我的代码一样。)通常不要这样做,但是因为您是一位愿意破例的老师。

希望下面的代码有所帮助。(这就是我将如何完成你正在尝试做的任务。)

function helpingTheTeacher() {

  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName("YOUR_SHEET_NAME_HERE");

  var values = sheet.getRange(2, 1, sheet.getLastRow(), sheet.getLastColumn()).getValues();

  for (var i = 0; i < values.length; i++){

  var timeStamp = values[i][0];
  var studentName = values[i][1];
  var studentNumber = values[i][2];
  var studentGrade = values[i][3];


  var message = "Hi " +studentName + " your grade is " +studentGrade + "."

  var email = studentNumber + "@email.com";

  var subject = "ALERT: MESSAGE FROM TEACHER!!!";

  MailApp.sendEmail(email, subject, message)

  }//END OF FOR LOOP
  }//END OF FUNCTION

推荐阅读