Advertisement
rmalcoriza

EmailScraper

Apr 9th, 2020
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.12 KB | None | 0 0
  1. //RJ Alcoriza - Ad-Lib Digital
  2. //Email parser for ad-weave
  3. //resource: https://developers.google.com/apps-script/reference/gmail
  4. var LABEL_PENDING = "pending";
  5. var LABEL_PARSED = "parsed";
  6.  
  7. function processPending_(sheet) {
  8.  
  9. // Get out labels by name
  10. var label_pending = GmailApp.getUserLabelByName(LABEL_PENDING);
  11. var label_parsed = GmailApp.getUserLabelByName(LABEL_PARSED);
  12.  
  13. // The threads currently assigned to the 'pending' label
  14. var threads = label_pending.getThreads();
  15.  
  16. // Process each thread in turn
  17. for (var t in threads) {
  18. var thread = threads[t];
  19.  
  20. // Get the messages on the thread
  21. var messages = thread.getMessages();
  22. for (var mss in messages) {
  23.  
  24. //added function to parse unread messages in case the platform isn't creating new threads
  25. if(messages[mss].isUnread()){
  26. var emailBody = messages[mss].getBody();
  27. var emailSubject = messages[mss].getSubject();
  28.  
  29. //Parse Subject for campaign creator:
  30. var campaignCreatorRaw = emailSubject.match(/\w*by\s.+\w*:/g).toString();
  31. var campaignCreator = campaignCreatorRaw.substring(3,campaignCreatorRaw.length-12)
  32.  
  33. //Parse Subject for market:
  34. var marketRaw = emailSubject.match(/:\s.+/g).toString();
  35. var market = marketRaw.substring(2,marketRaw.length);
  36.  
  37. //Parse mail body for campaign name:
  38. var campaignNameRaw = emailBody.match(/<li>Campaign\s.+[<]/g).toString();
  39. var campaignName = campaignNameRaw.substring(4,campaignNameRaw.length-1)
  40.  
  41. //Add the email contents to sheet
  42. sheet.appendRow([campaignCreator,market,campaignName]);
  43.  
  44. //Mark the message to read to avoid parsing it again
  45. messages[mss].markRead();
  46. }
  47. }
  48.  
  49. // Set to 'parsed' by changing the thread label
  50. thread.removeLabel(label_pending);
  51. thread.addLabel(label_parsed);
  52. }
  53. }
  54.  
  55. function scrapeEmail() {
  56. var ss = SpreadsheetApp.openById("1-RVBkAIica94tLn83mevG5653iRMgiyxLy46iM6EGiA");
  57. var sheetNm = ss.getSheetByName('mails_raw');
  58.  
  59. processPending_(sheetNm);
  60. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement