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

Send email based on the sum of cells from a form submission in Google Sheets

我有一个包含一系列线性比例问题的表格。提交到 sheet 那里我想得到他们的答案总数,如果数字是 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)");
  }
}

你开了个好头。请查看 "on form submit" 触发器返回的 event object。由于该对象包含所有响应数据,因此您实际上不需要读取 sheet 中的内容。具体来说,请注意 values 属性,它包含一个数组,其值(答案)的顺序与它们在传播 sheet.

中出现的顺序相同

您可以使用这些值进行所有求和和 control-flow(大于或小于 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});
  }
}

我假设您的表单回复已经保存到您的传播sheet(这是一项要求),但不要忘记 install the trigger,如下图所示。