This system automatically searches Gmail for emails sent to or from specific contacts or domains, converts them into PDFs, and stores them in named folders in Google Drive. It's used to keep a searchable, organized, and timestamped record of key communications for future reference, especially across insurance and claim-related projects.
YYYY-MM-DD - TO/FROM email@domain.com - Subject.pdf
Replace @example.com
or user@example.com
with your target domain or address:
function archiveEmailsByDomain(domain, folderLabel) { var searchQuery = "from:" + domain + " OR to:" + domain; var threads = GmailApp.search(searchQuery); var folderName = "Gmail PDFs - " + folderLabel; var folders = DriveApp.getFoldersByName(folderName); var folder = folders.hasNext() ? folders.next() : DriveApp.createFolder(folderName); for (var i = 0; i < threads.length; i++) { var messages = threads[i].getMessages(); for (var j = 0; j < messages.length; j++) { var message = messages[j]; var sender = message.getFrom().toLowerCase(); var recipient = message.getTo().toLowerCase(); var isFrom = sender.includes(domain.toLowerCase()); var isTo = recipient.includes(domain.toLowerCase()); if (!isFrom && !isTo) continue; var date = Utilities.formatDate(message.getDate(), "GMT", "yyyy-MM-dd"); var subject = message.getSubject().replace(/[^a-zA-Z0-9 ]/g, '').substring(0, 50); var direction = isFrom ? "FROM" : "TO"; var contact = isFrom ? sender : recipient; var match = contact.match(/<(.+)>/); var email = match ? match[1] : contact; var filename = `${date} - ${direction} ${email} - ${subject}.pdf`; var blob = Utilities.newBlob(message.getBody(), "text/html", filename).getAs("application/pdf"); folder.createFile(blob); } } }
function archiveShariBradix() { archiveEmailsByDomain("Shari.Bradix@cna.com", "Shari Bradix (Clean)"); } function archiveCNA() { archiveEmailsByDomain("@cna.com", "CNA (Clean)"); } function archiveJsheld() { archiveEmailsByDomain("@jsheld.com", "J.S. Held (Clean)"); } function archiveBockmon() { archiveEmailsByDomain("@bockmoninsurance.com", "Bockmon Insurance (Clean)"); } function archiveMarshallTexas() { archiveEmailsByDomain("@marshalltexas.net", "Marshall Texas (Clean)"); } function archiveEricPowell() { archiveEmailsByDomain("Powell.eric@marshalltexas.net", "Eric Powell (Clean)"); }
This system is designed for accuracy, automation, and fast retrieval of critical email communication records.