The Google Script will save any Gmail message (or thread) in your Google Drive as a native Google Document with proper formatting. Unlike the Save Gmail as PDF script that downloads the email threads as PDF files in your Google Drive, this Google Script create a Google Docs file for your Gmail message and these do not count against the storage quota.
function saveGmail(msgID) { // Based on Drive Scoop // Available at https://github.com/google/gfw-deployments var message = GmailApp.getMessageById(msgID); // Grab the message's headers. var from = message.getFrom(); var subject = message.getSubject(); var to = message.getTo(); var cc = message.getCc(); var date = message.getDate(); var body = message.getBody(); // Begin creating a doc. var document = DocumentApp.create(subject); var document_title = document.appendParagraph(subject); document_title.setHeading(DocumentApp.ParagraphHeading.HEADING1); var style = {}; style[DocumentApp.Attribute.HORIZONTAL_ALIGNMENT] = (DocumentApp.HorizontalAlignment.CENTER); document_title.setAttributes(style); var headers_heading = (document.appendParagraph("Gmail Message Headers")); headers_heading.setHeading(DocumentApp.ParagraphHeading.HEADING2); AddGmailHeaderToDoc(document, "From", from); AddGmailHeaderToDoc(document, "To", to); AddGmailHeaderToDoc(document, "Cc", cc); AddGmailHeaderToDoc(document, "Date", date); AddGmailHeaderToDoc(document, "Subject", subject); var body_heading = ( document.appendParagraph("Body (without Markup)")); body_heading.setHeading(DocumentApp.ParagraphHeading.HEADING2); var sanitized_body = body.replace(/<\/div>/, "\r\r"); sanitized_body = sanitized_body.replace(//g, "\r"); sanitized_body = sanitized_body.replace(/<\/p>/g, "\r\r"); sanitized_body = sanitized_body.replace(/<.*?>/g, ""); sanitized_body = sanitized_body.replace(/'/g, "'"); sanitized_body = sanitized_body.replace(/"/g, '"'); sanitized_body = sanitized_body.replace(/&/g, "&"); sanitized_body = sanitized_body.replace(/\r\r\r/g, "\r\r"); var paragraph = document.appendParagraph(sanitized_body); document.saveAndClose(); return document.getUrl(); } function AddGmailHeaderToDoc(document, header_name, header_value) { if (header_value === "") return; var paragraph = document.appendParagraph(""); paragraph.setIndentStart(72.0); paragraph.setIndentFirstLine(36.0); paragraph.setSpacingBefore(0.0); paragraph.setSpacingAfter(0.0); var name = paragraph.appendText(header_name + ": "); name.setBold(false); var value = paragraph.appendText(header_value); value.setBold(true); }