Question

I am currently using the following to send an email to a distribution list containing the headers/questions and corresponding answers when a Google Form is submitted:

function sendFormByEmail(e) {

 // Subject field of email

 var emailSubject = "New Student Case Filed";  

 // Comma-separated list of email addresses for distribution.
 var yourEmail     = "my email address";

 // Spreadsheet key, found in the URL when viewing your spreadsheet.
 var docKey       = "my spreadsheet key";

 // If you want the script to auto send to all of the spreadsheet's editors, set this value as 1.
 // Otherwise set to 0 and it will send to the yourEmail values.
 var useEditors     = 0;

 // Have you added columns that are not being used in your form? If so, set this value to 
 // the NUMBER of the last column that is used in your form.
 // for example, Column C is the number 3
 var extraColumns = 40;

  if (useEditors) {
  var editors = DocsList.getFileById(docKey).getEditors();
  if (editors) { 
   var notify = editors.join(',');
  } else var notify = yourEmail;
 } else {
  var notify = yourEmail;
 }

 // The variable e holds all the submission values in an array.
 // Loop through the array and append values to the body.
 // Need to omit headers with no response*

 var s = SpreadsheetApp.getActive().getSheetByName("StudentCases");
 if (extraColumns){
  var headers = s.getRange(1,1,1,extraColumns).getValues()[0];
 } else var headers = s.getRange(1,1,1,40).getValues()[0];

 var message = "";
 for(var i in headers) {
   message += headers[i] + ' : '+ e.values[i].toString() + '\n\n'; 
 }

Now I also want a Google Doc created containing the headers and responses. So far, I've been able to create the Doc, add the title, and add a paragraph, but now I need to replicate the array of headers/responses in the Google Doc as well.

// Create a new Google Doc named 'Case File' * need to figure out how to pull last name response from form.

 var doc = DocumentApp.create('Case File: Last Name*');

 // Access the body of the Doc, add a paragraph, *need to append array of headers/answers

 var body = doc.getBody().body.appendParagraph(); 

 // Get the URL of the Google Doc to include in Email

 var url = doc.getUrl();

 // Get ID of Doc to attach to email

 var id = doc.getId()

One other issue I'd like to solve; I only need the headers/questions that contain a response, as many of them will not necessarily warrant an answer. So in other words, IF there is no answer, THEN do not append to email.

Was it helpful?

Solution

It seems you provided a list of general requirements without much in the way of what you tried with the results you got. StackOverflow will be helpful to you if you provide more pointed questions about what exactly you have tried..

Can you share the exact code you have tried please? What were your results?

From a high level, I would proceed with this general workflow.

  1. Draft a gDoc template using placeholders in a variables nomenclature of your choice ~FName ~LName etc..
  2. Use an onFormSubmit trigger to make a copy of the gDoc template when a new form is submitted.
  3. Replace the ~FName ~LName placeholders in the copied gDoc with content captured in the form
  4. Save the copied gDoc as a PDF
  5. email the PDF to the email address provided in the form submission
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top