subtree(users/wpcarro): docking briefcase at '24f5a642'
git-subtree-dir: users/wpcarro git-subtree-mainline:464bbcb15cgit-subtree-split:24f5a642afChange-Id: I6105b3762b79126b3488359c95978cadb3efa789
This commit is contained in:
commit
019f8fd211
766 changed files with 175420 additions and 0 deletions
43
users/wpcarro/tools/monzo_ynab/main.go
Normal file
43
users/wpcarro/tools/monzo_ynab/main.go
Normal file
|
|
@ -0,0 +1,43 @@
|
|||
// Exporting Monzo transactions to my YouNeedABudget.com (i.e. YNAB)
|
||||
// account. YNAB unfortunately doesn't currently offer an Monzo integration. As
|
||||
// a workaround and a practical excuse to learn Go, I decided to write one
|
||||
// myself.
|
||||
//
|
||||
// This job is going to run N times per 24 hours. Monzo offers webhooks for
|
||||
// reacting to certain types of events. I don't expect I'll need realtime data
|
||||
// for my YNAB integration. That may change, however, so it's worth noting.
|
||||
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
)
|
||||
|
||||
var (
|
||||
ynabAccountID = os.Getenv("ynab_account_id")
|
||||
)
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// Business Logic
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// Convert a Monzo transaction struct, `tx`, into a YNAB transaction struct.
|
||||
func toYnab(tx monzoSerde.Transaction) ynabSerde.Transaction {
|
||||
return ynabSerde.Transaction{
|
||||
Id: tx.Id,
|
||||
Date: tx.Created,
|
||||
Amount: tx.Amount,
|
||||
Memo: tx.Notes,
|
||||
AccountId: ynabAccountID,
|
||||
}
|
||||
}
|
||||
|
||||
func main() {
|
||||
txs := monzo.TransactionsLast24Hours()
|
||||
var ynabTxs []ynabSerde.Transaction{}
|
||||
for tx := range txs {
|
||||
append(ynabTxs, toYnab(tx))
|
||||
}
|
||||
ynab.PostTransactions(ynabTxs)
|
||||
os.Exit(0)
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue