Banking-Api: Bankbuchungen in Google Sheets nutzen

Bei mobfish sind wir 2017 dazu übergegangen, unsere Finanzplanung auf wöchentlicher Basis abzugeben und wöchentlich mit den tatsächlichen Transaktionen abzugleichen. Vorteil dieser Vorgehensweise ist es, dass man wiederkehrende Transaktionen schnell erkennen und deren Buchung wochengenau vorhersehen kann. Dies ist bei Startups vor allem deshalb wichtig, da man häufig mal auf einen Liquiditätsengpass zusteuert und so wochengenau erkennen kann, wann es einen Handlungsbedarf gibt. In diesem kurzen Beitrag zeige ich, wie ich den Abgleich mittels Spreadsheets-Formeln und einer Banking-Api automatisiert habe.

Die Buchungen wochengenau abzugleichen ist nervig und wenn man eine monatsweise Darstellung wünscht, muss diese extra erstellt werden, da Monate leider nicht immer auf einem Montag beginnen und auf einen Sonntag enden. Im schlimmsten Fall hat man, wenn man seinen Monatsbericht aus den einzelnen Wochen mit Excel-Formeln grob zusammenfasst, die Gehaltszahlungen von 2 Monaten in einem Monatsabschnitt. 

Als Informatiker kann man einen solchen Zustand nicht lange dulden und so überlegte ich mir, ob es nicht praktisch wäre über eine Excel/Spreadsheet-Funktion den Ableich mit dem Konto bzw. die Überprüfung des Zahlungseingangs zu automatisieren.

Meine Vorstellung war folgende Funktion:

=banksum(Startdatum; Enddatum; Suchwort)

Damit wäre es möglich, die Gehälter der Mitarbeiter der richtigen Woche zuzuordnen:

=banksum(„29.10.2018“; „04.10.2018“; „Gehalt“)

Soviel zur Idee…

Nun zur Umsetzung. Um die Suche fix umzusetzen. Habe ich mich dazu entschlossen, alle Transaktionen in einer SQL-Datenbank zu führen. Dadurch sind zur Not auch komplexere Abfragen möglich und ich kann meinen Funktionsumfang schnell erweitern. Dazu kommt, dass Google-App Scripts eine fertige JDBC-Implementierung mitbringt, die den Zugriff auf eine Datenbank innerhalb eines Spreadsheets zum Kinderspiel macht:

 var connection=Jdbc.getConnection('jdbc:mysql://dbserver:3306/dbname', 'user', 'passwort');
  var statement=connection.createStatement();

Nun aber die Frage, wie komme ich an meine Bankdaten? 🤔 Meine erste Idee war: „Nimmste doch einfach den CSV-Export der Bank!“ Das Blöde daran ist nur, dass man den dann immer händisch einpflegen muss… 

Nachdem ich mich kurz über HBCI schlau gemacht habe, bin ich zu dem Schluss gekommen, dass das Ganze von irgendjemanden bereits umgesetzt worden ist und man ja darauf zugreifen kann. 

Der erste Gedanke war figo.io zu benutzen. Immerhin liegen unsere Bankdaten bereits dort, da unser ERP-System im Unternehmen ebenfalls auf die API-Schnittstelle zugreift. Nach kurzem hin und her mit dem figo-Support wurde klar, dass die Jungs und Mädels aus Hamburg mein Bastelprojekt nicht unterstützen würden.

Also weitergooglen. Mein nächster Versuch war „fintecsystems“. Die waren superschnell mit ihrem Support und nach kurzer Zeit hatte ich einen Testzugang und konnte unsere Bank-Transaktionen zumindest über die Webseite schon einmal verbinden. Innerhalb der Sandbox-API konnte ich nur leider nicht auf die Transaktionen zugreifen. Und nur zum basteln wollte ich keine vollständige Lizenz kaufen.

Am Ende bin ich bei finapi.io hängen geblieben. Ein Testaccount war schnell erstellt. Die Api-Schnittstelle war selbsterklärend und so purzelten schon wenige Minuten später meine Transaktionen in die Datenbank. Die FinApi hat vor allem für kleine Anwendungen ein mehr als faires Preismodell.

Optimierte Funktionen

Mein erster Prototyp war fertig und ich konnte anfangen, meine neu entwickelte Funktion in der Finanzplanung einzusetzen. Recht schnell stieß ich auf meine erste Grenze…mich selbst. Mein Gehalt in der Finanzplanung stimmte so gar nicht mit meinem echten Gehalt überein. Woran lags? Die Bank-Statements beinhalten auch VISA-Zahlungen und in denen steht immer mein Name drin. Meine Funktion brauchte also auch eine Möglichkeit mehrere Suchwörter zu unterstützen:

=banksum("29.10.2018"; "04.10.2018"; "Gehalt&Tobias Sell")

Auch an anderen Stellen in der Planung war diese Erweiterung sinnvoll. Zum Beispiel um die Kosten der „Google Cloud“ von „Google Apps“ zu trennen. 

Bei der Position „Tanken“ blieb ich abermals hängen. In diesem Fall, werden mehrere unterschiedliche Anbieter in einer Position vereint, da wir nicht alle bei der gleichen Tankstelle tanken und auch keine Tankkarte verwenden. Also braucht es auch noch eine „ODER“-Verknüpfung in meiner Funktion:

=banksum("29.10.2018"; "04.10.2018"; "Aral|Shell|Total&Tanken")

Um das Ganze mal in Aktion zu zeigen, habe ich ein kleines Video erstellt:

Demo-Sheet mit Beispielhafter Finanzplanung und der Funktion in Aktion.

Wer den Code dazu haben will, findet ihn hier. Mehr zu Google App Scripts gibt es hier.

Title-Photo by rawpixel on Unsplash

1 Gedanke zu “Banking-Api: Bankbuchungen in Google Sheets nutzen”

Kommentare sind geschlossen.