Created
August 12, 2019 09:51
-
-
Save stefanpejcic/ec6b3f5cd04181312723dd111e9c9303 to your computer and use it in GitHub Desktop.
Search gmail for receipts from paypal and than add them inside a google spreadsheet
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 searchGmail() { | |
var threads = GmailApp.search("from:paypal", 0, 10); | |
var sheet = SpreadsheetApp.getActiveSheet(); | |
var header = sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues()[0]; | |
for (var t=0; t<threads.length; t++) { | |
var msgs = threads[t].getMessages(); | |
for (var m=0; m<msgs.length; m++) { | |
var response = extractPayPalDetails_(msgs[m]); | |
var row = []; | |
for (var h=0; h<header.length; h++) { | |
if (header[h] in response) { | |
row.push(response[header[h]]); | |
} else { | |
row.push(""); | |
} | |
} | |
sheet.appendRow(row); | |
} | |
} | |
} | |
function extractPayPalDetails_(msg) { | |
var result = {}; | |
var body = msg.getPlainBody().replace(/\s+/g, " "), | |
html = msg.getBody().replace(/\s+/g, " "); | |
var match = /[A-Z]{3}\s\d+,\s\d{4}\s\d{2}:\d{2}:\d{2}\s.{9}/g.exec(body); | |
if (match) | |
result["Transaction Date"] = match[1]; | |
match = /<tr bgcolor="#ffffff"><td.*?>(.*?)<\/td><td.*?><a href.*?>(.*?)<\/a><\/td><td.*?>(.*?)<\/td><td.*?>(.*?)<\/td><td.*?>(.*?)<\/td><\/tr>/g.exec(html); | |
if (match) { | |
result["Item #"] = match[1]; | |
result["Item Title"] = match[2]; | |
result["Quantity"] = match[3]; | |
result["Price"] = match[4]; | |
result["Subtotal"] = match[5]; | |
} | |
match = /Shipping & Handling:\s+\(.*?\)(.*?)\s+Shipping/g.exec(body); | |
if (match) | |
result["Shipping and Handling"] = match[1]; | |
match = /Shipping Insurance.*?:(.*?)\s+Total:\s*(.*? .*?)\s+/g.exec(body); | |
if (match) { | |
result["Shipping Insurance"] = match[1]; | |
result["Total"] = match[2]; | |
} | |
match = /credit card statement as "(.*?)".*?purchased from:(.*?)\s+Receipt id:([\d\-]+)/gi.exec(body); | |
if (match) { | |
result["Name in Statement"] = match[1]; | |
result["Purchased From"] = match[2]; | |
result["Receipt ID"] = match[3]; | |
} | |
match = /international shipping.*?Total:(.*?)\s+.*credit card statement as "(.*?)"/gi.exec(body); | |
if (match) { | |
result["International Shipping Total"] = match[1]; | |
result["International Name in Statement"] = match[2]; | |
} | |
return result; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment