根据Google表格中表单提交的单元格总数发送电子邮件

时间:2018-04-11 11:08:13

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

我有一个包含一系列线性比例问题的表格。提交到一张表格,我想要得到他们的答案总数,如果数字是40或以上,请发送电子邮件" A"如果是39或以下,他们会收到电子邮件" B"。

有没有办法在提交表单时在新创建的行中汇总列B:G,从H列获取用户的电子邮件地址,并使用B:G的总和来确定发送的电子邮件?

我已经多次浏览App Script文档,但似乎无法成功运行并运行。

编辑添加到达此处的位置(意识到它目前毫无价值):

function onFormSubmit(e){
  var emailSubject;
  var row = 1;
  var messageCore;
  var newUserEmailSent = "NO";
  var EMAIL_SENT = "YES";
  var sheet = SpreadsheetApp.getActiveSheet();
  var startRow = 2;
  var lastRowUsed = getFirstEmptyRowByColumnArray() -1;
  function getFirstEmptyRowByColumnArray() {
    var spr = SpreadsheetApp.getActiveSpreadsheet();
    var column = spr.getRange('A:A');
    var values = column.getValues();
    lastRowUsed.setFormula("=SUM(B1:G1)");
  }
}

1 个答案:

答案 0 :(得分:0)

你开了个好头。请查看“on form submit”触发器返回的event object。由于该对象包含所有响应数据,因此您实际上不需要阅读工作表中的内容。具体来说,请注意values属性,该属性包含一个数组(答案)的数组,其顺序与电子表格中显示的顺序相同。

您可以使用这些值完成所有求和和控制流(超过或低于40)。然后,您可以使用MailApp发送相应的电子邮件。

查看此示例并进行所需的任何调整。

function onFormSubmit(formResponse){
  var sum = 0;
  for (var i = 1; i <= 6; i++) { // Column B = 1, Column G = 6
    sum = sum + Number(formResponse.values[i]);
  }
  var emailAddress = formResponse.values[7]; // This is the value that will be in Column H
  var yourEmailAddress = "me@example.com"; // Will be used in the BCC field, in case you want to receive the emails too
  if (sum >= 40) {
    var emailASubject = "Email A Subject";
    var emailABody = "Email A Body";
    MailApp.sendEmail(emailAddress, emailASubject, emailABody, {bcc: yourEmailAddress});
  } else {
    var emailBSubject = "Email B Subject";
    var emailBBody = "Email B Body";
    MailApp.sendEmail(emailAddress, emailBSubject, emailBBody, {bcc: yourEmailAddress});
  }
}

我认为您的表单回复已经保存到您的电子表格中(这是一项要求),但请不要忘记install the trigger,如下图所示。

enter image description here