代码之家  ›  专栏  ›  技术社区  ›  pwq

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

  •  0
  • pwq  · 技术社区  · 7 年前

    我有一个表格,上面有一系列线性尺度的问题。提交到一张表格,我想在那里得到他们的答案总数,如果数字是40或以上,给他们发送电子邮件“a”,如果是39或以下,他们会收到电子邮件“B”。

    提交表单时,是否有方法对新创建的行中的B:G列求和,从H列获取用户的电子邮件地址,并使用B:G的和来确定发送了哪封电子邮件?

    我已经阅读了很多次应用程序脚本文档,但似乎无法成功地启动和运行它。

    编辑以添加我对此的理解(意识到它目前一文不值):

    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 回复  |  直到 7 年前
        1
  •  0
  •   Diego    7 年前

    你开了个好头。请查看 event object 由“on form submit”触发器返回。由于该对象包含所有响应数据,因此实际上不需要读取工作表中的内容。具体而言,请注意 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