Google 表单自动发送电子邮件
Google Forms Automated Emails
我正在使用 Google 表单并在 Sheet 上收集回复。我需要根据表单上的回复之一将通知电子邮件发送给不同的团队。例如,表格有问题,你在哪个省,如果是 AB,那么我需要 AB 团队收到电子邮件通知,如果是 BC 团队,我只需要通知那个团队。
我尝试使用 Sheet(响应)并通过使用 Importrange 函数为每个省创建单独的 sheet 来构建脚本,但到目前为止还没有成功。我目前正在尝试查看是否可以只在表单本身中创建脚本而不必担心 sheets 而只使用一个 sheet.
var form = FormApp.getActiveForm();
var formResponses = form.getResponses();
for (var i = 0; i < formResponses.length; i++) {
var formResponse = formResponses[i];
var itemResponses = formResponse.getItemResponses();
for (var j = 0; j < itemResponses.length; j++) {
var itemResponse = itemResponses[j];
Logger.log('Response #%s to the question "%s" was "%s"',
(i + 1).toString(),
itemResponse.getItem().getTitle(),
itemResponse.getResponse());
}
}
/**
* Sends emails when form updated by end user, split responses by Province, send emails to team specified for each Province only.
*/
function sendEmails() {
var emailAddress = "example@example.com"; // First column
var message = itemResponse; // Response
var subject = 'Survey Updated';
MailApp.sendEmail(emailAddress, subject, message);
}
目前,上面的代码会在提交表单后向我发送电子邮件,我不知道如何按省过滤或根据省的回复向特定团队发送电子邮件。我还希望每个回复的详细信息都在电子邮件的正文中,这样团队就不必打开传播sheet.
尝试使用 onFormSubmit trigger 并使用链接 Sheet 在电子表格中编写脚本。您将能够从每个 onFormSubmit() 的事件对象中获取所需的信息,并且您应该能够根据需要使用该信息发送电子邮件。
如果您有任何问题,请 return 提出其他问题。
您需要的信息(响应的省份名称)应该在 itemResponse 对象的字段中可用。因此,书呆子要做的就是访问该信息并使用它的值进行转换。
itemResponse.getResponse() 方法的文档有一个 link:
https://developers.google.com/apps-script/reference/forms/item-response#getResponse()
编辑您的 sendEmails()
函数以获取最新的表单回复并搜索省份的项目回复:
function onSubmit(e) {
var responses = FormApp.getActiveForm().getResponses();
var response = responses[responses.length - 1].getItemResponses();
var provinceQuestionNumber = 4 // which question is the province question?
var province = response[provinceQuestionNumber - 1].getResponse()
if (province == "Province1"){
MailApp.sendEmail('province1Team@domain.com', 'New form response!', "The form has a new response for someone in province " + province + ".");
}
else if (province == "Province2"){
MailApp.sendEmail('province2Team@domain.com', 'New form response!', "The form has a new response for someone in province " + province + ".");
}
else if (province == "Province3"){
MailApp.sendEmail('province3Team@domain.com', 'New form response!', "The form has a new response for someone in province " + province + ".");
}
else if (province == "Province4"){
MailApp.sendEmail('province4Team@domain.com', 'New form response!', "The form has a new response for someone in province " + province + ".");
}
/*
...
*/
}
然后转到 Edit -> Current Project's Triggers
并使用以下设置设置新的 installable trigger:
- 选择要运行的功能:
sendEmails
- 选择应 运行 的部署:
Head
- Select 事件来源:
From form
- Select 事件类型
On form submit
另外别忘了更改省份名称和扩展条件语句,通过更改provinceQuestionNumber
.[=19=的值来设置省份问题是哪个题号]
我正在使用 Google 表单并在 Sheet 上收集回复。我需要根据表单上的回复之一将通知电子邮件发送给不同的团队。例如,表格有问题,你在哪个省,如果是 AB,那么我需要 AB 团队收到电子邮件通知,如果是 BC 团队,我只需要通知那个团队。
我尝试使用 Sheet(响应)并通过使用 Importrange 函数为每个省创建单独的 sheet 来构建脚本,但到目前为止还没有成功。我目前正在尝试查看是否可以只在表单本身中创建脚本而不必担心 sheets 而只使用一个 sheet.
var form = FormApp.getActiveForm();
var formResponses = form.getResponses();
for (var i = 0; i < formResponses.length; i++) {
var formResponse = formResponses[i];
var itemResponses = formResponse.getItemResponses();
for (var j = 0; j < itemResponses.length; j++) {
var itemResponse = itemResponses[j];
Logger.log('Response #%s to the question "%s" was "%s"',
(i + 1).toString(),
itemResponse.getItem().getTitle(),
itemResponse.getResponse());
}
}
/**
* Sends emails when form updated by end user, split responses by Province, send emails to team specified for each Province only.
*/
function sendEmails() {
var emailAddress = "example@example.com"; // First column
var message = itemResponse; // Response
var subject = 'Survey Updated';
MailApp.sendEmail(emailAddress, subject, message);
}
目前,上面的代码会在提交表单后向我发送电子邮件,我不知道如何按省过滤或根据省的回复向特定团队发送电子邮件。我还希望每个回复的详细信息都在电子邮件的正文中,这样团队就不必打开传播sheet.
尝试使用 onFormSubmit trigger 并使用链接 Sheet 在电子表格中编写脚本。您将能够从每个 onFormSubmit() 的事件对象中获取所需的信息,并且您应该能够根据需要使用该信息发送电子邮件。
如果您有任何问题,请 return 提出其他问题。
您需要的信息(响应的省份名称)应该在 itemResponse 对象的字段中可用。因此,书呆子要做的就是访问该信息并使用它的值进行转换。 itemResponse.getResponse() 方法的文档有一个 link: https://developers.google.com/apps-script/reference/forms/item-response#getResponse()
编辑您的 sendEmails()
函数以获取最新的表单回复并搜索省份的项目回复:
function onSubmit(e) {
var responses = FormApp.getActiveForm().getResponses();
var response = responses[responses.length - 1].getItemResponses();
var provinceQuestionNumber = 4 // which question is the province question?
var province = response[provinceQuestionNumber - 1].getResponse()
if (province == "Province1"){
MailApp.sendEmail('province1Team@domain.com', 'New form response!', "The form has a new response for someone in province " + province + ".");
}
else if (province == "Province2"){
MailApp.sendEmail('province2Team@domain.com', 'New form response!', "The form has a new response for someone in province " + province + ".");
}
else if (province == "Province3"){
MailApp.sendEmail('province3Team@domain.com', 'New form response!', "The form has a new response for someone in province " + province + ".");
}
else if (province == "Province4"){
MailApp.sendEmail('province4Team@domain.com', 'New form response!', "The form has a new response for someone in province " + province + ".");
}
/*
...
*/
}
然后转到 Edit -> Current Project's Triggers
并使用以下设置设置新的 installable trigger:
- 选择要运行的功能:
sendEmails
- 选择应 运行 的部署:
Head
- Select 事件来源:
From form
- Select 事件类型
On form submit
另外别忘了更改省份名称和扩展条件语句,通过更改provinceQuestionNumber
.[=19=的值来设置省份问题是哪个题号]