学生填写Google表格时教师的表格通知

时间:2018-06-12 23:32:23

标签: google-apps-script google-sheets google-form

我正在建立一个学校网站,以连接学生和老师。教师填写一份要求提供服务的Google表格(评分论文......),并将其与Google Spreadsheets相关联。然后,学生可以看到该电子表格并注册其他Google表单以帮助教师,并且该回复会记录在同一个Google电子表格中。当学生提交他/她的Google表格时,我希望通过电子邮件通知教师,学生已注册以帮助他们。我该如何发送该通知?而且我不希望通知来自我自己的学校地址。那可能吗? 以下是Google网站:https://sites.google.com/fcpsschools.net/jmhsservicesignup/subjects/math

这是我到目前为止的代码:

function sendEmails() {

  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Tutors 
Signed Up");

  var startRow = sheet.getLastRow();  // First row of data to process

  var dataRange = sheet.getRange(startRow, 1, 1, 5)
  // Fetch values for each row in the Range.

  var data = dataRange.getValues();

  for (i in data) {

    var row = data[i];

    var emailAddress = row[3];       // Second column

    var tutor = row[0];

    MailApp.sendEmail(emailAddress,"Tutor Request Filled",""+tutor+" has accepted your request to be tutored! Please notify"+tutor+" if anything changes.");

  }
}

getLastRow似乎不起作用,电子邮件从我自己的地址发送,而不是Google表单通知,如果可能的话。

如果这是不可能的,我可能只是让学生将电子邮件发送给老师,但我真的想让这个过程自动化。如果你能想到一个解决方法,那也很棒。

1 个答案:

答案 0 :(得分:0)

添加Sandy Good和Guilherme提到的内容。 以下是一些提示:

不清楚您尝试在函数中获取的数据。您是否尝试从表单提交中获取数据?在这种情况下,您需要从脚本菜单设置一个触发器,并将其连接到该函数(函数需要有一个'事件'参数,通常称为e)。

function processFromSubmission(e) {//get data from e}

如果您不想这样做,请道歉。记录sheet.getLastRow()时会发生什么?

询问学校是否可以为您提供另一个用于此表单的电子邮件地址,例如notifications@yourschool.edu。按照steps here设置别名。为"拥有"的gmail帐户执行此操作这些表单正在将电子数据发送到。

确保您的别名设置正确。你应该可以在"来自"撰写电子邮件时的下拉菜单。还可以尝试运行代码Logger.log(GmailApp.getAliases())并检查日志以查看它是否可用。

使用GmailApp.sendEmail发送电子邮件,而不是MailApp.sendEmail。它们几乎相同,但看起来MailApp版本不允许您从别名发送。您可以指定' replyTo'如果您想将其设置为其他内容,例如填写表单的学生或其他任何内容(仍然不清楚您正在尝试设置的内容!)。

发送电子邮件:

GmailApp.sendEmail(emailAddress, subject, body,
   {replyTo: replyToEmailAddress_can_be_any_email,
    from: 'notifications@yourschool.edu'
 });

注意:您的链接没有打开。