提交Google表单并为字段返回特定值时发送电子邮件

时间:2014-06-11 21:22:20

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

无论如何我不是程序员所以我试图使用我发现的与此请求有关的示例,但我很难找到正确的方法来执行此操作。所以任何帮助都会非常感激。

我正在尝试在提交表单时发送电子邮件,其中一个字段(响应表中的列B)的值与“Not Satisfied”匹配。我要发送的电子邮件应包含一条消息以及C列的值。

目前我有一个触发器设置来触发表单提交功能,并使用以下代码。

function sendEmail(email_address, email_subject, email_message) {
  var lastRow = sheet.getLastRow();
  var value = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Form Responses 1").getActiveCell().getValue().toString();
  if (value.match("Not Satisfied" )) { 
    MailApp.sendEmail('example@gmail.com', 'User notr satisfied with [column C]', 'A user has reported that they are not satisfied with [column c]');
  }
}

我知道我可能需要将其更改为仅查看包含数据的最后一行,而不是获取活动单元格,因为这不是“onedit”脚本。但我不知道如何更改脚本来做到这一点。

提前致谢。

1 个答案:

答案 0 :(得分:0)

表单只会将表单值传递给触发器函数。您可以在与触发器关联的main函数中调用sendEmail。

代码段来源:Get Google Forms Data in an Email Message

function SendGoogleForm(e) 
{     
    var columns = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Form Responses 1").getRange(1,1,1,s.getLastColumn()).getValues()[0];    
    var found = false;

    for ( var keys in columns ) {
      if ( e.namedValues[columns[keys]] == "Not Satisfied") ) {
        found = true; 
      }
    }

    if (found) 
      MailApp.sendEmail(email, subject, message); 
}