0

The code below does get the form response and emails it with the body formatted like this:

Question/Title1

Response1

Question/Title2

Response2

The pdf created, though, shows it all in a single line, like this: New Response Form: Question/Title1 Response1 Question/Title2 Response2...

How can I create it so that it looks like the formatted email body above?

function onFormSubmit(e) {
 
  // Get the response that was submitted.
  var formResponse = e.response;

  // Get the items (i.e., responses to various questions)
  // that were submitted.
  var itemResponses = formResponse.getItemResponses();

  // Create a variable emailBody to store the body
  // of the email notification to be sent.
  var emailBody = "New form response:\n\n";

  // Put together the email body by appending all the
  // questions & responses to the variable emailBody.
  itemResponses.forEach(function(itemResponse) {
    var title = itemResponse.getItem().getTitle();
    var response = itemResponse.getResponse();
    emailBody += title + "\n" + response + "\n\n";
  });

  // Send the email notification using the
  // sendEmail() function.
  sendEmail(emailBody);

  var folderID = "SOME_FOLDERID";
  var intermediate = DriveApp.createFile('New Form Response','<b>'+ emailBody +'</b>', MimeType.HTML);
  var blob = intermediate.getAs(MimeType.PDF);
  Logger.log(blob.getContentType());
  var pdfFile = DriveApp.createFile(blob);
  DriveApp.getFolderById(folderID).addFile(pdfFile)
  DriveApp.getFileById(intermediate.getId()).setTrashed(true);
}

// A function that sends the email
// notification.
function sendEmail(emailBody) {
  MailApp.sendEmail("EMAIL_ADDRESS", "New form response", emailBody);
}
onit
  • 2,275
  • 11
  • 25

1 Answers1

1

You need to use <br> tag for your new lines in your emailBody since you are using an HTML type when you create a file. You can use String.replaceAll() to replace \n with <br>.

//Replace all "\n" with "<br>"
emailBody = emailBody.replaceAll("\n","<br>");
var intermediate = DriveApp.createFile('New Form Response','<b>'+ emailBody +'</b>', MimeType.HTML);

Output:

enter image description here

Note:

Ron M
  • 5,791
  • 1
  • 4
  • 16