谷歌表格回复电子邮件

问题描述:

我希望在提交表格时只填写填写回复但不填空白或空白字段的电子邮件。谷歌表格回复电子邮件

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

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

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}); 

我找到了解决我的问题。我将其张贴在下面进行知识共享。谢谢。

将以下脚本粘贴到响应电子表格的脚本编辑器中。首先运行初始化函数来启动脚本,然后当表单提交时,只有填写的字段形成表单才会触发电子邮件。

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()); 
    } 
}