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);
}
CodePudding user response:
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
Note:
- You can actually use
\n
as line break in your html body, but you need to set it in css. See Line break in HTML with '\n'