Email Receipts to QIF
If you are like me, you love iTunes, and if you are very much like me, you use some sort of personal financial tool, to keep a handle on the ole' finances. I got sick of importing the digital email info into my financial program, so I found a way to import an email receipt into my financial program. I used the awk tool along with the amazingly expressive power of regular expressions to turn an mbox file (The file Thunderbird uses to save your email) into a QIF file that is ready for import.
Peep This!
function getField(src, headerRE, valueRE)
{
if ( match( src, headerRE valueRE)) {
headerStart = RSTART
valueEnd = RSTART + RLENGTH
match( src, headerRE )
headerEnd = RSTART + RLENGTH
valueStart = headerEnd
valueLength = valueEnd - headerEnd
return substr(src, valueStart, valueLength)
}
else
{
return " false"
}
}
BEGIN {
RS = "From - "
apple = 0
movielink = 0
now = systime()
getline
start = match(FILENAME, "\\\\[^\\\\/]*$")
output = "EmailReceipts" substr(FILENAME, RSTART + 1, RLENGTH) ".qif"
print("using " FILENAME " as input.")
print("outputting to " output)
print("!Type:CCard") > output
}
/Apple Receipt/ {
print "D" getField($0, "Receipt Date: ", "[\\/$.0-9A-Za-z]*") > output
print "T-" substr(getField($0, "Order Total: ", "[\\/$.0-9A-Za-z]*"), 2, 100) > output
print "PiTunes" > output
print "LLeisure:Tapes & CDs" > output
print "MOrder #: " getField($0, "Order Number: ", "[\\/0-9A-Za-z]*") > output
print "^" > output
apple++
}
/Subject: Movielink Order Confirmation/ {
print "D" getField($0, "Date : ", "[\\/$.0-9A-Za-z]*") > output
print "T" substr(getField($0, "Transaction Total:[ \t]*", "[\\/$.0-9A-Za-z]*"), 2, 100) > output
print "PMovieLink" > output
print "LLeisure:Movies & Video Rentals" > output
print "M" getField($0, "Movie Title Player Format Store Until Price\n", "[\\\\\\/0-9A-Za-z$.() ]*") > output
print "^" > output
movielink++
}
END {
print apple " apple reciepts."
print movielink " movielink reciepts."
}


0 Comments:
Post a Comment
<< Home