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.

278854443 991932747
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.

670273300 923828611
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.

490349594 677874368
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.  

60100321
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.

479409126
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: , , , , , , , , , , , , , , , , , , , , , , , ,