Google 用于发送电子邮件的表单脚本

Google form script to send email

关于在提交 google 表单后发送电子邮件的脚本,我遇到了一些问题。

因此,当我 运行 我的代码收到此错误消息时: ReferenceError: getValues is not defined at onFormSubmit

您可以在下面找到脚本

function onFormSubmit(e) {
  Logger.log("[METHOD] onFormSubmit");
  
  sendEmail(e.range);
}

function sendEmail(range) {
  Logger.log("[METHOD] sendEmail");

  // FETCH SPREADSHEET //
  var values = range.getValues();
  var row = values[0];

  // EXTRACT VALUES //
  var DateRequest = values[0]
  var TypeRequest = values[1]
  var StartDate = values[2]
  var EndDate = values[3]
  var Observation = values[4]
  var TLemail = values[5]

  // CLEAN VARIABLES //
  if (Observation.length == 0) Explain = "None";
  
  // PREPARE EMAIL //
  var emailRecipients = +TLemail+"@google.com";
  var emailSubject = TypeRequest;
  var emailBody = "<h3>Vacation Request:</h3><hr /> \
  <p> \
  <strong>Type or request:</strong><br /> \
  "+TypeRequest+" \
  </p><p> \
  <strong>Date of Request:</strong><br /> \
  "+DateRequest+" \
  </p><p> \
  <strong>Start Date:</strong><br /> \
  "+StartDate+" \
  </p><p> \
  <strong>End Data:</strong><br /> \
  "+EndDate+" \
  </p><p> \
  <strong>Aditional comment:</strong><br /> \
  "+Observation+" \
  </p><p> \
  </p>";


  // SEND EMAIL //
  MailApp.sendEmail({
  to: emailRecipients,
  subject: emailSubject,
  htmlBody: emailBody
 });
}

提前致谢

替换:

var values = range.getValues();

var values = e.range.getValues();

您没有在代码中的任何地方定义range

  • 要么你自己手动定义
  • 或者,您使用 event objects 触发器 onFormSubmit 提供的

一种选择是使用事件对象 range:

function onFormSubmit(e) {
 var values = e.range.getValues();

相当于

function onFormSubmit(event) {
  var values = event.range.getValues();

function onFormSubmit(hello) {
  var values = hello.range.getValues();
  • 或者,更简单,您直接检索 e.values

所以:

function onFormSubmit(e) {
  var values = e.values;
  var DateRequest = values[0];
  var TypeRequest = values[1];
  ...