🎣 Automation scripts for fetching email messages from Gmail API.
Gmail Fisher allows you to query email messages in your Gmail inbox.
Some of these automation tasks are used for fetching email receipts from certain purchases made online,
scrapping email subjects, bodies and attachments; and mapping them to Expense objects, to serialize them
into .json files.
Some existing adapters include fetching food expenses from UberEats or Bolt Food, or transportation expenses from Uber and Bolt.
Follows an example of the JSON output for such expenses:
[
{
"service": "Bolt Food",
"restaurant": "Hello Beijing",
"total_euros": 11.8,
"date": "2023-02-14",
"sender_email": "Bolt Food <portugal-food@bolt.eu>"
},
{
"service": "Bolt Food",
"restaurant": "Poke House",
"total_euros": 14.29,
"date": "2023-02-11",
"sender_email": "Bolt Food <portugal-food@bolt.eu>"
},
{
"service": "Bolt Food",
"restaurant": "DOTE",
"total_euros": 13.34,
"date": "2023-02-08",
"sender_email": "Bolt Food <portugal-food@bolt.eu>"
}
]Go to Google Cloud Platform console,
and under APIs and services > Credentials, create a new OAuth 2.0 Client ID credential.
Under Actions, click Download OAuth client and then Download Json.
Rename downloaded file to credentials.json and place it under the auth folder.
Filters available messages with Uber Eats and Bolt Food expenses.
Scraps data from those messages to populate a FoodExpense iterable that will then be serialized to a Json file.
Example:
poetry run export_food_expenses --output-filepath='output/food_expenses.json'Filters available messages with Bolt expenses.
Scraps data from those messages to populate a BoltTransportationExpense iterable that will then be serialized to a Json file.
Example:
poetry run export_transport_expenses --output-filepath='output/transport_expenses.json'Filters available messages with KEYWORDS and from SENDER_EMAILS and lists them.
Example:
poetry run list_messages --sender-email='portugal-food@bolt.eu' --keywords='Delivery'Filters available messages with KEYWORDS and from SENDER_EMAILS and lists them.
If filtered messages contain attachments, then those will be downloaded
to an output directory and with a formatted name of PaySlip_YYYY-MM.pdf.
Example:
poetry run save_attachments --sender-email='me@my-company.com|payroll@my-company.com' --keywords='payslip'