Gmail na steroidech: Stačí pár řádků v Apps Scriptu a zvládnete hotové divy

  • Apps Script dokáže automatizovat Gmail, Kalendář a další služby
  • Jedná se o Javascript, který se spouští přímo na serverech Googlu
  • Vyzkoušíme si několik specialit s Gmailem

Nedílnou součástí Gmailu a mnoha dalších služeb Googlu je Apps Script – Javascript rozšířený o hromadu systémových knihoven, pomocí kterých můžete programovat a automatizovat různé operace ať už v pošťákovi od Googlu, kalendáři, úložišti Drive nebo textovém a tabulkovém procesoru.

Před několika týdny jsme přešli na podnikový Gmail (Google Apps) i u nás v redakci, a jelikož byla neděle v Brně docela deštivá, napsal jsem si drobný skript, jenž automaticky zpracovává výplatní pásky, které mi zaměstnavatel zasílá e-mailem v šifrovaném dokumentu PDF.

Můj automat si každý měsíc v Gmailu vyhledá poslední výplatní pásku a zašifrovaný soubor PDF zašle skrze HTTPS spojení na můj server, kde dokument nejprve s pomocí hesla dešifruje linuxový program qpdf a výsledek předá ke zpracování dalšímu programu pdf2txt, který vše převede na prostý text a ten konečně vrátí zpět mému automatu.

Automat v dešifrovaném textu vyhledá, kolik jsem v daný měsíc čerpal dovolené, kolik mi ji ještě zbývá, kolik jsem toho odpracoval a jaký obnos mi tedy dorazil na účet. Tyto hodnoty se pak zapíšou do tabulky dokumentu Google Spreadsheets, který zároveň vykreslí graf. Na úplný závěr se zašifrované PDF pro vyšší přehlednost uloží do složky na mém firemním úložišti Drive.

Klepněte pro větší obrázek Klepněte pro větší obrázek
Vlevo e-mail s šifrovanou přílohou PDF a vpravo průběžný výstup do tabulkového dokumentu. Vše probíhá automaticky každý měsíc.

Aniž bych tedy propříště musel sám cokoliv dešifrovat a pročítat, kdykoliv stačí otevřít jeden webový tabulkový dokument a mám přehled, jak mi roste (nebo klesá) výplata a jak v průběhu roku čerpám dovolenou.

Jelikož základní popis automatu sklidil na sociální síti úspěch, dnes si ukážeme, že podobná automatizace Gmailu není vůbec složitá a jednoduché úkoly zvládnete s pomocí několika řádků kódu.

Kalendářový automat

Prvním příkladem bude kalendářový automat. Pokud máte Gmail, můžete pomocí znaku + vytvářet libovolné přezdívky. Takže pokud mám hlavní adresu cizekuba@gmail.com, do stejné schránky dorazí i e-mail adresovaný cizekuba+kalendar@gmail.com.

Vytvořím si jednoduchý skript, který přečte e-mail doručený pro tuto adresu a podle nadpisu a obsahu zprávy vytvoří událost v kalendáři. Poté zprávu přesune do koše.

Klepněte pro větší obrázek Klepněte pro větší obrázek
Když mi dorazí na můj poštovní alias e-mail vlevo, můj automat jej promění v událost v kalendáři vpravo

Stačí tedy přejít na své úložiště Drive, klepnout na Přidat a z nabídky vybrat Google Apps Script. Tímto se dostanete do editoru kódu, ve kterém již můžeme psát svůj Javascript. Tento článek nemá být učebnicí Javascriptu, takže budu předpokládat, že znáte alespoň elementární základy.

Klepněte pro větší obrázek Klepněte pro větší obrázek
Editor Apps Scriptu a nový program

Nejprve se podívejte na celý kód, pak si jej rozebereme:

function Kalendar() {

 // Vyhledej všechny zprávy adresované přezdívce – aliasu
 var vlakna = GmailApp.search("to:cizekuba+kalendar@gmail.com");
 
 // Postupně projdi všechny odpovídající e-maily
 for(var v in vlakna) {
 var zpravy = vlakna[v].getMessages();
 for(var z in zpravy) {
 
 // Získej nadpis e-mailu
 var nadpis = zpravy[z].getSubject();
 
 // Získej první řádek z e-mailu, ve kterém je popis události
 var popis = zpravy[z].getPlainBody()
 .trim()
 .split("\n")[0];
 
 // Vytvoř událost ve výchozím kalendáři
 var udalost = CalendarApp.getDefaultCalendar()
 .createEventFromDescription(nadpis)
 .setDescription(popis);
 
 // Přesuň zprávu do koše
 zpravy[z].moveToTrash(); 
 }
 } 
}

Jak vidno, je to docela jednoduché. Pro práci s poštou slouží objekt GmailApp, který hned na začátku použijeme pro vyhledání všech e-mailů pro adresáta cizekuba+kalendar@gmail.com. Jelikož Gmail pracuje se zprávami shluknutými do vláken (i když se nemusejí pokaždé automaticky shlukovat), GmailApp nám vrátí jejich pole v proměnné vlakna.  

Projdeme vlákna jedno za druhým a z každého získáme pole zpráv v proměnné zpravy. I ty postupně projdeme jednu za druhou a konečně můžeme pracovat s e-mailem a jeho vlastnostmi, tedy v našem případě s nadpisem a tělem.

Jakmile tyto hodnoty získáme, vytvoříme událost ve výchozím kalendáři. Mohli bychom samozřejmě vybrat i jakýkoliv jiný, ale to je nad rámec této ukázky.

Při vytváření události jsme si v tomto nejjednodušším příkladu vystačili s metodou createEventFromDescription, která se pokusí sama rozluštit název události, datum a čas podle textového zadání, které bude přímo v nadpisu e-mailu.

Funkce má bohužel své limity, pokud ale bude mít e-mail nadpis třeba ve tvaru:

Postavit psí boudu, 2016-05-28 10:00-15:00,
tedy: Název události, YYYY-MM-DD HH:MM-HH:MM,

automat si s ní poradí. Nakonec k události připojím ještě dodatečný popis z prvního řádku e-mailu a zprávu nakonec smažu.

Hotovo! To je celé.

Celý miniprogram nyní můžete vyzkoušet výběrem funkce, která se má spouštět, z roletky v hlavní nabídce a klepnutím na šipku. Jelikož se chce náš program připojit k službám Gmail a Kalendář, vyskočí poprvé žádost o udělení patřičných práv. Podruhé se už ale vše zpracuje a během několika sekund se v kalendáři objeví nová událost.  

Klepněte pro větší obrázek
Spuštění našeho skriptu

Časovač

Jelikož to má být ale automat, je třeba nastavit, aby se skript spouštěl stále dokola a tedy průběžně kontroloval, jestli jsou na Gmailu nějaké podobné zprávy.

K tomu slouží spouštěče. Klepněte v hlavním panelu na tlačítko časomíry a přidejte časový spouštěč, který spustí libovolnou funkci třeba každých patnáct minut. Nejméně můžete nastavit dokonce i jednu minutu, ale buďte na Google trošku hodní a zbytečně jej nezatěžujte.

Klepněte pro větší obrázek
Nastavení automatického spouštění skriptu každých 15 minut

Tak a teď už je to opravdu všechno. Apps Script bude každých pár minut kontrolovat poštu pro cizekuba+kalendar@gmail.com, převádět ji na jednoduché události a poté zprávy mazat.

V druhé kapitole si vytvoříme ještě jednodušší program, který bude na úložiště Drive zálohovat důležité doklady v PDF. V našem případě to bude elektronická verze dokladu SIPO v PDF.  

Témata článku: Google, Web, Programování, Gmail

35 komentářů

Nejnovější komentáře

  • Pavel Jelínek 18. 5. 2016 21:36:46
    Gmail je luxusní věc. Vynikající provázanost s ostatními gapps +...
  • rebeltester 18. 5. 2016 20:24:26
    :-D na google mam nekolik acountu na tom jednom na disku nasrackovany...
  • Error503 18. 5. 2016 12:45:54
    Není to úplně skvělý skript, ale kromě únorové výplaty to asi bude...

Určitě si přečtěte


Deset tipů, jak ovládnout Google: Vyhledávejte jako mistři

Deset tipů, jak ovládnout Google: Vyhledávejte jako mistři

** Vyhledávače jsou natolik dobré, že si poradí i s frází v běžné češtině ** Pokud to ale nebude stačit, můžete vyzkoušet pokročilé funkce ** Vybrali jsme ty nejzajímavější

25.  9.  2016 | Jakub Čížek | 18

9 nejlepších programů na úpravu fotek. Placené i zdarma

9 nejlepších programů na úpravu fotek. Placené i zdarma

** Pro běžné úpravy fotek nemusíte pirátit Photoshop, vystačíte si s levnějšími programy ** Ceny pokročilých editorů se většinou vejdou do dvou tisíc korun ** Mnohdy stačí i bezplatné nástroje

Včera | Stanislav Janů | 40

Pojďme programovat elektroniku: Vyzkoušíme IR, ovládneme světýlko přes Bluetooth a vyšleme zprávu na sto metrů

Pojďme programovat elektroniku: Vyzkoušíme IR, ovládneme světýlko přes Bluetooth a vyšleme zprávu na sto metrů

** Budeme odposlouchávat IR ovladač klimatizace ** Vyrobíme laciný rádiový vysílač ** Vyzkoušíme komunikaci pomocí Bluetooth a v pásmu 433 MHz

21.  9.  2016 | Jakub Čížek | 19

Jak zastavit nechtěné programy na Windows? Koukněte na Plánovač úloh

Jak zastavit nechtěné programy na Windows? Koukněte na Plánovač úloh

** V systému se mohou periodicky spouštět nechtěné aplikace ** Anebo si vyberou tu nejméně vhodnou chvíli ** Prozkoumejte Plánovač úloh na Windows

23.  9.  2016 | Jakub Čížek | 127


Aktuální číslo časopisu Computer

Srovnání výhodných 27" monitorů

Velký test levných rychlých routerů

Jak nastavit Android, aby vás nesledoval

45 podrobných testů a recenzí