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=的值来设置省份问题是哪个题号]