【问题标题】:Google Form responses to emailGoogle 表单对电子邮件的回复
【发布时间】:2020-11-16 08:48:25
【问题描述】:

我想在表单提交后收到电子邮件,其中只有填写的回复,而不是空白或空字段。

我做了一些研究,发现下面的脚本会立即触发电子邮件到表单中的电子邮件地址。电子邮件还包含所有字段,包括空字段。

请帮我实现一个满足我要求的脚本。

    function setup() {

  /* First, delete all previous triggers */
  var triggers = ScriptApp.getProjectTriggers();

  for (var i in triggers) {
    ScriptApp.deleteTrigger(triggers[i]);
  }

  /* Then add a trigger to send an email on form submit */
  ScriptApp.newTrigger("sendConfirmationEmail")
  .forForm(FormApp.getActiveForm())
  .onFormSubmit()
  .create();
}

function sendConfirmationEmail(e) {
  // e is a Form Event object - see https://developers.google.com/apps-script/guides/triggers/events#google_forms_events

  // Edit this to set the subject line for the sent email
  var subject = "Registration Successful";

  // This will show up as the sender's name
  var sendername = "Your Name Goes Here";

  // This is the body of the registration confirmation message
  var message = "Thank you for registering.<br>We will be in touch.<br><br>";
  message += "Your form responses were:<br><br>";

  // response is a FormResponse - see https://developers.google.com/apps-script/reference/forms/form-response
  var response = e.response;

  var textbody, sendTo, bcc;

  // Get the script owner's email address, in order to bcc: them
  bcc = Session.getActiveUser().getEmail();

  // Now loop around, getting the item responses and writing them into the email message
  var itemResponses = response.getItemResponses();
  for (var i = 0; i < itemResponses.length; i++) {
    var itemResponse = itemResponses[i];
    message += itemResponse.getItem().getTitle() +": " + itemResponse.getResponse() + "<br>";
    // If this field is the email address, then use it to fill in the sendTo variable
    // Check that your form item is named "Email Address" or edit to match
    if (itemResponse.getItem().getTitle() == "Email Address") {
      sendTo = itemResponse.getResponse();
    }
  }

  message += "<br>If you wish to edit your response, please click on <a href=\"" + response.getEditResponseUrl() + "\">this link</a>.";
  message += "<br><br>";
  textbody = message.replace("<br>", "\n");

  GmailApp.sendEmail(sendTo, subject, textbody,
                       {bcc: bcc, name: sendername, htmlBody: message});

【问题讨论】:

    标签: javascript google-apps-script google-sheets google-forms


    【解决方案1】:

    我找到了我的问题的解决方案。我把它贴在下面是为了分享知识。谢谢。

    将以下脚本粘贴到响应电子表格的脚本编辑器中。首先运行初始化函数来启动脚本,然后每当提交表单时,将触发一封电子邮件,其中仅包含表单填写的字段。

    function Initialize() {
    
      try {
    
        var triggers = ScriptApp.getProjectTriggers();
    
        for (var i in triggers)
          ScriptApp.deleteTrigger(triggers[i]);
    
        ScriptApp.newTrigger("EmailGoogleFormData")
          .forSpreadsheet(SpreadsheetApp.getActiveSpreadsheet())
          .onFormSubmit().create();
    
      } catch (error) {
        throw new Error("Please add this code in the Google Spreadsheet");
      }
    }
    
    function EmailGoogleFormData(e) {
    
      if (!e) {
        throw new Error("Please go the Run menu and choose Initialize");
      }
    
      try {
    
        if (MailApp.getRemainingDailyQuota() > 0) {
    
          // You may replace this with another email address
          var email = "email address";
    
          // Enter your subject for Google Form email notifications
          var subject = "Form Submitted";
    
          var key, entry,
            message = "",
            ss = SpreadsheetApp.getActiveSheet(),
            cols = ss.getRange(1, 2, 1, ss.getLastColumn()).getValues()[0];
    
          // Iterate through the Form Fields
          for (var keys in cols) {
    
            key = cols[keys];
            entry = e.namedValues[key] ? e.namedValues[key].toString() : "";
    
            // Only include form fields that are not blank
            if ((entry !== "") && (entry.replace(/,/g, "") !== ""))
              message += key + ' :: ' + entry + "\n\n";
          }
    
          MailApp.sendEmail(email, subject, message);
        }
      } catch (error) {
        Logger.log(error.toString());
      }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-03-19
      • 1970-01-01
      • 2015-05-27
      • 1970-01-01
      • 2011-08-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多