简体   繁体   中英

How can I get the data entered into a Google Form emailed to me?

I made some modifications to a Google Script I found online, but not knowing how to script so well, I'm sure I'm missing something here.

My goal is to have all the information submitted through a Google Form to then be emailed to me or a group I'll create.

This script here does email me the info, but it's all added as a single line without even mentioning the questions.

I'm a total newb, but I'm sure this could be solved with some kind of command or event that I'm unaware of.

Take a look:

var EMAIL_SENT = "EMAIL_SENT";

function sendEmails() {
var sheet = SpreadsheetApp.getActiveSheet();
var startRow = 2;  // First column of data to process
var numRow = 1;   // Number of columns to process
var dataRange = sheet.getRange(startRow, 1, numRow, 10)
// Fetch values for each row in the Range.
var data = dataRange.getValues();
for (var i = 0; i < data.length; ++i) {
var row = data[i];
var message1 = row[1,2,3,4,5];
var message2 = row[2];
var message3 = row[3];
var message4 = row[4];
var message5 = row[5];
var message6 = row[6];
var message7 = row[7];
var message8 = row[8];// Second column
var emailSent = row[10]
 if (emailSent != EMAIL_SENT) {  // Prevents sending duplicates
  var subject = "New Hire On The Way!";
MailApp.sendEmail("itgroup@mycompany.com",subject,message1+message2+message3+message4+message5+message6);
  sheet.getRange(startRow + i, 10).setValue(EMAIL_SENT);
}
}
}

That whole "EMAIL_SENT" was my attempt at having the script not resend info that was already entered.

If there is a better way of doing this, I'd love to hear it.

Thank you so much!

You can set this function as a trigger for onFormSubmit in the response sheet.

Source: Get Google Forms data in an Email Messages

function SendGoogleForm(e) { 

    var email = Session.getActiveUser().getEmail();
    var subject = "Google Docs Form Submitted";  

    var s = SpreadsheetApp.getActiveSheet();
    var columns = s.getRange(1,1,1,s.getLastColumn()).getValues()[0];    
    var message = "";    

    for ( var keys in columns ) 
      message += columns[keys] + ' :: '+ e.namedValues[columns[keys]] + "\n\n"; 

    MailApp.sendEmail(email, subject, message); 

}

if your just wanting the email to have a little more structure you can just add html to the individual messages. Depending how crazy your want to get is up to you. Here is a simple change that you can try it should have a little more structure. Replace this with your if statement

if (emailSent != EMAIL_SENT) {  // Prevents sending duplicates
 var subject = "New Hire On The Way!";
MailApp.sendEmail("itgroup@mycompany.com",subject,message1+"<br />"+"<br />"+"<br />"+message2+"<br />"+"<br />"+"<br />"+message3+"<br />"+"<br />"+"<br />"+message4+"<br />"+"<br />"+"<br />"+message5+"<br />"+"<br />"+"<br />"+message6+"<br />"+"<br />"+"<br />");
 sheet.getRange(startRow + i, 10).setValue(EMAIL_SENT);

}

All I did here is add breaks between your messages. This should create some spaces. You can always go crazy with inline css and html. www.w3schools.com is always a great place to start for beginners. Good Luck and happy coding!

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM