Last active
January 21, 2022 17:51
-
-
Save psifertex/aa423d024e85423a4f62eba8b9cedadf to your computer and use it in GitHub Desktop.
google apps script to save/sort incoming resumes
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
function processResumes() | |
{ | |
/* Configuration */ | |
var labelToSave = 'Resumes'; | |
var labelToMarkSaved = 'Resumes/Saved'; | |
var labelBroken = 'Resumes/Saved/Broken'; | |
var resumeFolderID = 'INSERTYOURFOLDERIDHERE'; | |
// Folder ID can be found just by browsing to the folder in google drive | |
/* Configuration Goes Here */ | |
/* Shouldn't need to tweak below here */ | |
var date = new Date(); | |
var folderName = Utilities.formatDate(date, Session.getScriptTimeZone(), "yyyy-MM"); | |
var resumes = DriveApp.getFolderById(resumeFolderID); | |
var resumeFolder = resumes.getFoldersByName(folderName); | |
if (resumeFolder.hasNext()) | |
{ | |
resumeFolder = resumeFolder.next(); | |
} else { | |
resumeFolder = resumes.createFolder(folderName); | |
} | |
var label = GmailApp.createLabel(labelToSave); | |
var saved = GmailApp.createLabel(labelToMarkSaved); | |
var broken = GmailApp.createLabel(labelBroken); | |
if (label) | |
{ | |
var threads = label.getThreads(); | |
for (var i in threads) | |
{ | |
var isSaved = false; | |
var thread = threads[i]; | |
var labels = thread.getLabels(); | |
for (var j in labels) { | |
if (labels[j].getName() == saved.getName() || labels[j].getName() == broken.getName()) | |
{ | |
isSaved = true; | |
} | |
} | |
if (!isSaved) | |
{ | |
var msgs = thread.getMessages(); | |
for (var k in msgs) | |
{ | |
var extracted = false; | |
var mesg = msgs[k]; | |
var attachments = mesg.getAttachments(); | |
var fromStr = mesg.getFrom(); | |
var messageDate = Utilities.formatDate(mesg.getDate(), Session.getScriptTimeZone(), "yyyy-MM-dd"); | |
var messageSubject = mesg.getSubject(); | |
for(var l in attachments) | |
{ | |
//save attachments to resumes folder | |
var attachmentName = attachments[l].getName() || ""; | |
if (attachments[l].getContentType() == "application/pdf" || attachments[l].getContentType() == "text/html" || attachmentName.slice(-4) == ".pdf" || attachmentName.slice(-5) == ".html" || attachmentName.slice(-4) == ".doc" || attachmentName.slice(-5) == ".docx") | |
{ | |
Logger.log("["+date+"]: Attachment saved from email with subject: "+mesg.getSubject()+" into folder: "+resumeFolder.getUrl()+"\n"); | |
resumeFile = resumeFolder.createFile(attachments[l].copyBlob()); | |
oldExt = attachmentName.split('.').pop(); | |
resumeFile.setName(messageDate + " " + fromStr + " " + messageSubject + oldExt); | |
extracted=true; | |
} | |
} | |
if (!extracted) | |
{ | |
//Need to print the PDF of the email body | |
Logger.log("["+date+"]: HTML->PDF saved from email with subject: "+mesg.getSubject()+" into folder: "+resumeFolder.getUrl()+"\n"); | |
var htmlBodyFile = resumeFolder.createFile('body.html', mesg.getBody(), "text/html"); | |
var pdfBlob = htmlBodyFile.getAs('application/pdf'); | |
pdfBlob.setName(messageDate + " " + fromStr + " " + messageSubject + ".pdf"); | |
resumeFolder.createFile(pdfBlob); | |
htmlBodyFile.setTrashed(true); | |
} else { | |
Logger.log("["+date+"]: Message failed to save with subject: "+mesg.getSubject()+" into folder: "+resumeFolder.getUrl()+"\n"); | |
thread.addLabel(broken); | |
continue | |
} | |
} | |
thread.addLabel(saved); | |
} | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment