SMS-ek feldolgozása Google Spreadsheet-be

Gyakran kapunk SMS-eket automatáktól, például bankoktól, parkolásról, internetes vásárlásokról. Ezek az üzenetek egy megadott formátummal rendelkeznek, ezért elvileg meg lehetne őket egy táblázatban jeleníteni. Ebben a cikkben Androidos készülékre érkező SMS-ek Google Spredsheetbe való parse-olásával foglalkozom.

Kiindulási állapot

Az UniCredit Banktól egy megadott szintaktikájú SMS-t kapok, ha kártyával vásárolok:

Ebben az üzenetben szerepel hogy mikor történt a vásárlás, hol történt a vásárlás és mekkora összeget költöttem.

Célállapot

A kapott üzenet szeretnénk egy Google Spreadsheetben rögzíteni az alábbi módon:

Megoldás

Elsőként meg kell oldanunk, hogy az SMS-ek felkerüljenek egy Google Spreadsheet-be, hogy azt utána fel tudjuk dolgozni. Ehhez az “SMS to Spreadsheet“ Android alkalmazást használtam, de több ilyen megoldás is létezik:

Letöltés: https://play.google.com/store/apps/details?id=com.adengappa.smstospreadsheet

A telepítés után beállíthatjuk a Google fiókunkat, és hogy kezdje el backup-olni az üzeneteket egy táblázatba.

A következő lépés, hogy a kapott üzenetet feldolgozzuk és szétszedjük oszlopokra majd bemásoljuk egy másik “Kiadások” táblázatba. Ehhez nyissuk meg azt a táblázatot ahol az SMS-ek backupja van, és válasszuk a Tools / Script editor menüpontot, a megjelenő ablakban az alábbi kódot illesszük be. Az openById() paraméterét az URL-ből tudjuk meg az egyes táblázatok megnyitásakor.

Három függvényt láthatunk:

  • myFunction(): ez az a függvény, ami számolja és tárolja, hogy hányadik sornál járunk az SMS-eket tartalmazó Spreadsheetben, és ha beillesztésre kerül egy új sor, akkor meghívja a másik két függvényt:
  • getBankSMS(row): a myFunction az újonnan beillesztett sor számával meghívja a függvényt, ami a visszaadja az 5. Cellában található üzenetszöveget. Feltételben ellenőrizzük, hogy csak a bank telefonszámáról egy bejövő (Received) SMS-t dolgozzunk fel, akkor ha tartalmazza az SMS a “Sikeres Vasarlas” szöveget. Utóbbira azért van szükség, mert erre a telefonszámra például “Készpénz felvét” üzenetek is jönnek amit nem szeretnénk megjeleníteni a táblázatban. Ha a feltétel nem teljesül null-t adok vissza.
  • writeExpenses(smsToWrite): ez a függvény a kapott SMS szöveget egy másik spreadsheet “2017. Július” munkalapjának végére beilleszti. A dátumot (smsDate), a költés tárgyát (smsShop) és az összeget (smsValue) egyszerű string műveletekkel szedjük ki.

Ha a fenti megoldás elkészült, már csak azt kell beállítanunk, hogy minden új sor beillesztéskor fusson le a myFuntion metódus. Ehhez a script managerben válasszuk az Edit / Current project’s triggets menüpontot és adjuk hozzá onChange eseményre a myFunction függvényt:

A fentieken kívül amire még figyelni kell, hogy első indításkor jogosultságot kér a Google a Script számára a SpreadSheethez, ami természetesen megadható.

Jó szórakozást és testreszabást, sokat segít próbálgatásokhoz az  Browser.msgBox(‘Kiírok valamit’); ami popupban jelenít meg üzeneteket.