Szerző: Sicz-Mesziár János

Script Your Own Company - G.A.S. aka Power of G-Suite

Minden cégtulajdonos és cégvezető célja a profitmaximalizálás. Azaz a legkisebb költség mellett a legnagyobb bevételre szert tenni. A Google Apps Script (G.A.S.) az első esetben lehet segítségünkre. A cikket gondolatébresztőnek szánom, a későbbiekben pedig valós megoldásokat fogok mutatni.

Mindig mondani szoktam az informatika iránt érdeklődőknek, hogy maga az informatika önmagában nem csinál semmit. Csak egy eszköz, amely kvázi információt tologat balról jobbra, jobbról balra. Az IT szektor akkor válik igazán érdekessé, amikor ezt az eszközt elkezdjük kombinálni egy másik szakterülettel. Ha szereted a földrajzot, akkor érdekes lehet számodra a geoinformatika, térinformatika és a GIS rendszerek. Ha érdekel az orvostudomány vagy az egészségügy, akkor a bioinformatika vagy telemedicina rendszereket érdemes megismerned. Ha sport a te területed akkor a viselhető technológiákkal nem lőnél mellé. Ha a kommunikáció a mindened akkor pedig az internet, a hálózatok, és a mobil területet ismerd meg. Ha szeretsz meglévő dolgokból újat alkotni akkor az adatbányászat és a big-data lesz a játszótered. Ha az önmegvalósítást a művészetben találtad meg, akkor pedig képalgoritmusokon keresztül a filmes trükkökön át a prototipizáló panelekig tiéd a világ. És ez csak a felszín.

Jól bizonyítja, hogy a Ponte világában is elég sokrétű projektek vannak a mai napig. A Smartcity mobil alkalmazásunk számtalan térinformatikai fejlesztést foglal magában, mint útvonaltervezés, térképrajzolás, AR. De volt még K+F fejlesztésünk Beacon beltéri helymeghatározással is. A DOKK CMS rendszerünk pénzügyi partnereinknél teljesít 0-24 órában, például a BÉT vagy a Diákhitel. Régebbi fejlesztések között volt videó disztribúció és streaming fejlesztés is. Most pedig futnak Cryptocurrency projektek.

Be kell látni, hogy ahol az információ megjelenik ott a szoftverfejlesztés azonnal bevethető. Ez az oka, hogy az informatika széles körben elterjedt és hogy a mai napig hoz magával meglepetéseket. Az IT szektor ki van éhezve a fejlesztők iránt, mivel számtalan ötlet vár megvalósításra. Üzletileg meghatározható, hogy egy-egy projekt meg nem valósítása milyen potenciális bevételektől való elesést jelent. Nem hiába hangzik el sokszor a time to market kifejezés.

Mit tehet egy cég, ha nem talál elég munkaerőt?

Automatizálás! Automatizálás! Automatizálás!

A mérnökök és a szoftverfejlesztők azt tanulják hogyan oldjanak meg problémákat. Nem túlzás általánosítani, hogy nem bírják a monoton feladatokat, az adminisztrációt és ha valamit 20-nál többször kell megcsinálni, akkor arra már scriptet írnak. Ezt kell felhasználni! Miért ne írhatnál szoftvert a cég működésére és írtod ki az ismétlődő feladatokat? Ott az ipari forradalom 4.0, ahol a robotizáció új területeket hódít meg. A boltokban önfizető kasszák jelennek meg, az Amazon pedig kísérletezik egy olyan bolttal ahol elég csak kisétálni a termékekkel. Vagy említhetném az élelmiszerboltok házhozszállítás szolgáltatásait. Ha ők képesek voltak megváltoztatni a gondolkodásukat és folyamataikat te miért ne tennél másképpen?

syoc_-_gsuite-products.png

Lépjünk túl egy kicsit azon, hogy a Google rengeteg, már böngészőből is jól használható alternatív irodai terméket nyújt, mint Docs, Spreadsheet, Slide, Forms, Calendar vagy a Gmail. A G-Suite is csak Core products-nak hívja őket. Emellett még van 55 Google termék plusz ott vannak a third-party Marketplace termékek is.

De képzeld el, hogy mi lenne ha ezek között tetszőleges kapcsolatot hozhatnál létre, tetszőleges szabályok mentén! Miben tudnál változtatni, hogy hatékonyabban működjön a céged?

 

syoc_-_power-of-g-suite.png 

 

Na itt jön képbe a Google Apps Script.

HR osztályon dolgozol. Minden félévben anonim módon fel kell mérned, hogy például van-e valakinek problémája az irodával. Begyűjtött válaszokból pedig excelt (Spreadsheet) majd grafikont készíteni. Ezt pedig elküldeni a vezetőknek.

HR osztályon dolgozol. A cég minden szülinapos kollégáját egy kedves felköszöntő levél várja reggel. Még akkor is ha te szabadságon vagy.

Beszerzési időszak van. Ismét fel kell mérned az igényeket, majd Spreadsheet, döntés előkészítés, priorizálás.

PM vagy. Új projekt indul. Megint meg kell csinálni hozzá a Driveban a mappastruktúrát, beállítani megosztást jogosultságokkal, csinálni hozzá Groups levelezőlistát, Youtrackbe vagy Jiraba boardot ugyanazon agilis státuszokkal, Slack channelt és meghívni az embereket.

CFO vagy. Mindig amikor emailben érkezik az (automata) számla te letöltöd a PDF-et és felteszed a Driveba az aktuális hónap alá!

CEO vagy. Nem érsz rá. De fontos, hogy naprakész legyél abban, hogy hogyan állnak a feladatok, kivel mi történik, mennyi erőforrás van és így tovább. Jó lenne neked egy összefoglaló.

Sysadmin vagy és megtudod, hogy a Drive korlátlan tárhelyet ad, így oda akarsz backupot csinálni. Aztán ráebredsz, hogy mennyi új lehetőséget kapsz mivel egy helyen van. Tudod ellenőrizni (tesztelni), hogy mindenből ténylegesen készül mentés.

PO vagy és fél évente meg kell mutatni számokkal egy rövid prezentációban, hogyan teljesít a termék. Ugyanazok a termékek ugyanazok a számok, ugyanaz a beszámoló.

Growth Hacking mágus vagy. Ingatlan értékesítesnél segítesz a Sales csapatnak. Kitalálod, hogy személyre szóló prezentációt kaphatnának az érdeklődők a kitöltött Form alapján e-mailbe csatolva, így a telefonjukra is lementhetik és offline elérhető. Nem kellene mindig frissíteni, hogy mennyi ingatlan érhető még el, milyen aktuális hitelajánlattal lehet megvenni és így tovább.

Ha azt mondom, hogy Contacts, Calendar, Maps, Gmail, Translate, ezekből mit tudnál kihozni? Több nyelvű tárgyalófoglalót? Vagy mindig frissülő ügyféltérkép?

Emeljük a szintet. Mit szólnál ha osztályozhatnád az ügyfeleid és megtudnád mennyire problémásak? Gmail alapján megnézheted mekkora adminisztrációs overhead a cég számára. Maps vagy Direction API segítségével megnézheted mennyi az átlagos idő kijárni helyszínre. Vagy a kapcsolodó dokumentumok száma a Drive-on. Ha szerződést hosszabbítasz máris be tudod építeni ezeket a költségeket.

Szerintem ennyi felvetésből már mindenki ráérez a G.A.S. lehetőségeire.

Nézzük meg mit kell tudni a Google Apps Scriptről!

Kapunk egy script nyelvet amely a JavaScript 1.6 nyelven alapul kiegészítve az 1.7 és 1.8 néhány funkciójával valamint az ECMAScript 5 API részhalmazával. Van hozzá egy böngészőből elérhető kódszerkesztő felület, hibakeresés (debug) lehetőséggel. Amit megírunk logikai kódot az a Google szerverein fut és semmi telepítésre nincs szükség.

Többféle célra is felhasználható, pár fontosabb kategória:

  • Web app: különálló webes alkalmazás, amely teljes értékűen használható
  • Extension: egyéni menük, dialógus ablakok, oldalsó menük Docs, Spreadsheet vagy akár a Forms képességeinek kiterjesztése
  • Add-on: újabb G-Suite irodai termékek amelyek az G-Suite Add-on Marketplace-n publikálhatók

Ezen kívül még van pár további lehetőség, mint script írása Spreadsheethez, hasonlóan az MS Office VB scriptjeihez. Vagy Google Apps Script segítségével chatbotot írni, amely mostanság egyre népszerűbb, mivel csökkentik az ügyfélszolgálatok terheléseit.

Google Apps Script alapok

Hozzuk létre az első alkalmazásunkat és nézzük meg az alapvető tudnivalókat!

Ezt kétféleképpen tehetjük meg:

  1. Felkeressük a script.google.com oldalt, ahol egy helyen láthatjuk az összes eddig megírt scriptünket. Itt a bal felső sarokban kiválasztjuk a +New Script menüpontot.
    syoc_-_gas-create-v2.jpg

  2. Google Drive alatt a kívánt könyvtárba megyünk és +New > More > Google Apps Script
    syoc_-_gas-create.jpg


Ha jól csináltuk, akkor egyből megnyílik az online szerkesztő és már lehet is dolgozni.

Hogyan épül fel egy script fájl

Maga az Apps Script összetett és több részből áll. Egyrészt ott vannak a scriptek (*.gs) amire leginkább fókuszálni fogunk, de része a beállított időzített futtatások, meg a library-k használatának lehetősége is.

syoc_-_gas_empty.jpg

Ha megfigyeljük, akkor látjuk, hogy elsőként létrejön egy Code.gs fájl (lásd bal oldalt), ahol kapunk egy myFunction() nevű metódust. Ide akár azonnal el is lehet kezdhetünk dolgozni, írhatjuk a Javascript kódunkat. Ugyanakkor érdemes tudni, hogy további *.gs fájlokat is elhelyezhetünk, mivel ez nagyobb scriptek esetén javíthatja a kódstruktúrát.

syoc_-_gas-add-new-gs.jpg

Bizonyára feltűnt, hogy nem csak scriptet, hanem HTML fájlt is hozzá lehet adni. Ez bizony jól fog jönni a frontend felületek kialakításakor. :)

A kód végrehajtási sorrendjét befolyásolja a létrehozott fájlok sorrendje. :( Ez egy csúnya limitáció, de elébe mehetünk a problémának, ha egy kicsit előre gondolkodunk. Az eddigi tapasztalataim alapján az alábbi *.gs fájlokat érdemes létrehozni mielőtt belekezdünk:
- Polyfills.gs: mivel Javascriptben dolgozunk előfordulhat, hogy a JS motor aktuális verziója valamilyen funkciót nem támogat, így azt egy-egy polyfill-el lehet pótolni. Jobb esetben ez üres fájl lesz. De az problémát nem okoz.
- Configs.gs: A script működését befolyásoló paraméterek.
- Tools.gs: Függvények és osztályok halmaza.
Triggers.gs: Időzítéssel kapcsolatos függvények. Opcionális.
- Apps.gs: Maga az alkalmazás magasabb szintű logikái, amit futtatunk.
... ez után pedig jöhetnek a frontend HTML fájlok.

 

Hello world

Elsőként legyen egy hello world alkalmazásunk.

 syoc_-_gas-hello-world.jpg

Futtatni a fenti menüsoron lévő ▶ gombbal tudjuk. De előtte válasszuk ki melyik függvényt akarjuk végrehajtani. Jelen példánkban a helloWorld. Egyébként nincs a klasszikus értelemben vett main() belépési pontunk.

Futni mindig az elmentett kód fog. Ha olyan módosításunk van amit még nem mentettünk el, azt az adott fülön egy piros csillaggal jelzi. Futtatás előtt érdemes Ctrl+S kombót nyomni.

Loggolás, naplózás

Ha futtatjuk, akkor látszólag nem történik túl sok minden. Igazából csak nincs előttünk a Log ahova ír. De meg lehet nyitni a menüből a View > Logs úton vagy csak nyomjuk meg a Ctrl+Enter billentyűkombinációt.

Debuggolás, hibakeresés

Fejlesztői eszköztár egyik tipikus eszközének bemutatása maradt már csak ki. Azaz, hogy tudsz hibakeresni, debuggolni. Különös tekintettel arra, hogy egy böngészőben írod a kódot miközben az a felhőben fut. Nos a helyzet az, hogy mindent ugyanúgy kell csinálni, mint ahogy azt bármely más fejlesztőkörnyezet alatt megszokhattuk. 

 syoc_-_gas-hello-world-debug.jpeg

El kell helyezni egy töréspontot (breakpoint) és hibakeresés (debug) módban futtatni a bogár ikonnal. Ez után kapunk egy megfigyelő (watcher) ablakot ahol lépésenként végignézhetjük, hogyan dolgozik a programunk és milyen részeredmények születnek az egyes lépésekben.

 

Úgy gondolom, hogy bevezetésnek és az alapok megismeréséhez ennyi már elegendő. Ha megjött a kedved hozzá és szeretnél most már több kódot is látni akkor ajánlom elolvasásra a következő fejezetet. Vagy ismerd meg jobban a hivatalos útmutatót.

Ha tetszett a cikk oszd meg másokkal is.