Kalendář Google, Google tabulka, Gmail a Google Script?!
Kalendář Google v G Suite balíčku nám dokáže vytrhnout onen pověstný trn z paty. Pomocí této aplikace se dokážeme zbavit chaosu, ale poslouží nám v mnoha dalších ohledech našeho osobního nebo pracovního života.
Já však zde nebudu ukazovat již tisíckrát omílaná témata, ale zaměřím se na možnost propojení a drobnou automatizaci pomocí Google Scriptu. Propojovat budeme Google tabulky, Google kalendář, Gmail ale zabrousíme také k ČNB. Trezory plné zlata necháme stranou, ale pokusíme se ze stránek ČNB automaticky a pravidelně načítat kurz Eura.
Jedná se o modelovou ukázku a spíše přehled možností G Suite řešení. Přesto uvedené řešení mám stále nasazené a používám ho. Zarputilé vývojáře prosím o určitou shovívavost:)
Naplňme si kalendář Google daty z ostatních G Suite aplikací
Náš modelový případ bude spočívat v následujících krocích, které budou probíhat v týdenním intervalu:
- načteme kurz Eura ze stránek ČNB do buňky B9 v Google tabulce, jedná se list s názvem ceník
- vypočítáme aktuální cenu G Suite licencí v Českých korunách
- pro budoucí analýzu si ceny G Suite licencí zapíšeme na další list s názvem historie v Google tabulce
- aktuální cenu základních G Suite licencí si zapíšeme do kalendáře Google jako celodenní událost
- odešleme e-mail, kde si vypíšeme aktuální ceny za G Suite licence pro daný týden
Google script můžeme spouštět na základě mnoha událostí. My využijeme možnosti spouštět Google Script v pravidelnou dobu a čas. V našem případě budeme script spouštět v neděli mezi jednou a druhou hodinou raní.
Google tabulka je pomyslnou základovou deskou našeho řešení
Doslova a do písmene. Obrázek vydá za tisíc slov a tak šup sem sním. Jak vidíte, jedná se o triviální Google tabulku, ceník G Suite licencí.
To co potřebujeme vyřešit je aktualizovat hodnotu buňky B9 platným kurzem dle ČNB Euro / Česká koruna. Aktualizaci buňky vyřešíme pomocí Google Scriptu.
Kde vytvořím Google Script? V Google tabulce stačí otevřít menu Nástroje -> Editor Scriptu a můžeme se pustit do drobného programování. Cenu v Kč pro dané licence získám prostým výpočtem kde zohledňuji bankovní poplatek za převod např. C2=roundup(B2($B$9+B10);0)
Útržek Google Scriptu, jak vlastně ten kurz získáme?
// získání ceny kurzu CNB var pageContent = UrlFetchApp.fetch("http://www.cnb.cz/cs/index.html").getContentText(); var matched = pageContent.match(/<td style="padding-right:1px; padding-left:1px; width:100%;" id="rate_eur" class="rate">(\d+\,*\d*)/); var numberAsString = matched[1];
Pomocí funkce UrlFetchApp.fetch( ) načteme celý obsah html stránky (ve zdrojovém html kódu) do proměnné pageContent. V té pak vyhledáme výskyt řetězce (obsahuje css styl, který předchází samotné hodnotě kurzu Eura), kde pomocí regulárního výrazu „vyseparujeme“ kurz Eura.
Aktualizace ceny G Suite licencí
Získaný kurz pomocí Google Scriptu zapisujeme do Google tabulky do buňky B9 v listu s názvem ceník pomocí funkce updateCell().
// získání data a posledního řádku z listu Historie var date = new Date(); var row = getLastRow("historie"); // zapsaní hodnoty kurzu a hodnoty G Suite Basic předplatného do listu Historie k danému datu var price = updateCell("B9",numberAsString,"ceník"); var valueGSBasic = getCellValue("C2","ceník"); var valueGSBusiness = getCellValue("C3","ceník"); updateCell("A"+ row,date,"historie"); updateCell("B"+ row,valueGSBasic,"historie"); updateCell("C"+ row,valueGSBusiness,"historie");
Zároveň v listu s názvem historie udržuji týdenní update cen G Suite.
Kalendáře Google, celodenní událost pro zobrazení aktuální ceny
My chceme cenu za G Suite licence zapsat jako celodenní událost do sekundárního kalendáře Google. V nastavení kalendáře Google si zjistíme ID kalendáře (ID jsem si dovolil pozměnit). ID kalendáře zapíšeme do proměnné id.
// zapsání poplatků za licenci do kalendáře pro předplatné var id = "cleverity.cz_2d123456789123456222@resource.calendar.google.com"; kalendarPredplatne = CalendarApp.getCalendarById(id); kalendarPredplatne.createAllDayEvent('Basic ' + roundValue(valueGSBasic, 0) + ' / Business '+ roundValue(valueGSBusiness, 0),date);
Pomocí Google Scriptu aktivujeme sekundární kalendář a následně pomocí funkce createAllDayEvent() zapíšeme požadované údaje jako celodenní událost. V kalendáři výsledek vypadá takto:
Nechte si zaslat aktuální ceny předplatného do e-mailové schránky
Dále chceme jednou týdně dostávat e-mailovou zprávu, jejíž součástí budou jednotlivé aktuální ceny G Suite předplatného. K vlastnímu odeslání e-mailu využijeme funkci sendEmail().
K formátování těla emailu použijeme archaické html tagy pro tabulku.
// odeslání informativního e-mailu s cenou, úkol s aktualizací var emails = "radek.pohnan@cleverity.cz"; var subject = "kalkuluj licence, nebo tě microsoft sežehne zaživa!"; var from = "kurz-licence@cleverity.cz"; var message="<table border='0',cellpadding='10',cellspacing ='0', width ='600'>" +"<tr>" +"<td bgcolor = '#ffffff', Align = 'center'><b>"+"Typ licence G Suite"+"</b></td>" +"<td bgcolor = '#ffffff', Align = 'center'><b>"+"Cena"+"</b></td>" +"</tr>" +"<tr>" +"<td bgcolor = '#eeeeee', Align = 'center'>G Suite Basic / měsíc</td>" +"<td bgcolor = '#eeeeee', Align = 'center'>"+valueGSBasic+",- Kč</td>" +"</tr>" +"<tr>" +"<td bgcolor = '#cccccc', Align = 'center'>G Suite Business / měsíc</td>" +"<td bgcolor = '#cccccc', Align = 'center'>"+valueGSBusiness+",- Kč</td>" +"</tr>" +"<tr>" +"<td bgcolor = '#eeeeee', Align = 'center'>G Suite Basic / rok</td>" +"<td bgcolor = '#eeeeee', Align = 'center'>"+(valueGSBasic*12/1.2)+",- Kč</td>" +"</tr>" +"<tr>" +"<td bgcolor = '#cccccc', Align = 'center'>G Suite Business / rok</td>" +"<td bgcolor = '#cccccc', Align = 'center'>"+(valueGSBusiness*12)+",- Kč</td>" +"</tr>" +"</table>"; MailApp.sendEmail({ to: emails, subject: subject, htmlBody: message, name: from }); }
Emailová zpráva pak reálně vypadá takto:
Integrace jednotlivých aplikací G Suite pomocí Google Scriptu
Možná je to až moc kostrbatý příklad. Možná ano. Chtěl jsem vám však naznačit, jak je poměrně jednoduché pomocí Google Scriptu přenášet data mezi jednotlivými službami balíčku G Suite. Když to shrnu, vzali jsme si hodnotu kurzu Eura, tu přenesli do tabulky. Následně jsme vytvářeli kalendářovou událost a vše zakončili odesláním emailu. Vše probíhá automatizovaně, bez jakéhokoli našeho zásahu.
Za mě je to jednoznačně jedna z mnoha výhod Google aplikací G Suite.