我正在建立一个学校网站,以连接学生和老师。教师填写一份要求提供服务的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表单通知,如果可能的话。
如果这是不可能的,我可能只是让学生将电子邮件发送给老师,但我真的想让这个过程自动化。如果你能想到一个解决方法,那也很棒。
答案 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'
});
注意:您的链接没有打开。