IT rekvalifikácia. Seniorní programátori zarábajú až 6 000 €/mesiac a rekvalifikácia je prvým krokom. Zisti, ako na to!

4. diel - Google Apps Script - Časové spúšťače

V minulej lekcii, Google Apps Script - Jednoduché a inštalované spúšťače , sme si ukázali použitie jednoduchého spúšťače (triggeru), funkcia onOpen(), a potom jej premenu na inštalovaný spúšťač, ktorý už bolo nutné autorizovať. V dnešnej lekcii si ukážeme, ako používať spúšťače riadené časom.

Vytvorenie tabuľky a skriptu

Vytvorme si novú tabuľku, pomenujeme ju, z menu zvolíme Nástroje -> Editor skriptu, skript si opäť pomenujeme a skúsime napísať túto funkciu:

function tik() {
    var sheet = SpreadsheetApp.getActiveSheet();
    var range = sheet.getRange('A1');
    var akt_cas = new Date();
    range.setValue(akt_cas);
}

Prvý riadok už poznáte, vráti aktuálny list tabuľky, ku ktorej je skript pribalený. Na druhom vyberieme bunku A1. Úplne rovnako by sme ju mohli vybrať zápisom sheet.getRange(1, 1). Na ďalšom riadku si do premennej akt_cas uložíme aktuálny dátum a čas. A na poslednom riadku túto hodnotu uložíme do bunky A1.

Funkcia tik() je schválne zapísaná veľmi "ukecaný". Mohli by sme ju samozrejme podstatne skrátiť a fungovala by úplne rovnako. Skrátený zápis by vyzeral takto:

function tik() {
    SpreadsheetApp.getActiveSheet().getRange('A1').setValue(new Date());
}

Pravidelné spúšťanie

Teraz si nastavíme pravidelné spúšťanie tejto funkcie. Postup je úplne rovnaký ako v minulej lekcii. V editore skriptov v menu vyberieme Upraviť -> Spúšťače aktuálneho projektu. Klikneme vpravo dole na tlačidlo Pridať spúšťač, otvorí sa nám panel pre nastavenie spúšťania funkcie.

Funkciu tik() máme už vybranú, pretože je to jediná funkcia, ktorú v editore máme. Vo výbere Vybrať implementáciu je len jediná možnosť Head, takže opäť nie je čo vyberať. Voľbu Vyberte zdroj udalosti nastavíme na Riadené časom. Keď si potom rozbalíme voľbu Vyberte typ časového spúšťače, bude ponuka vyzerať takto:

Výber frekvencie spúšťanie Google Apps skriptu - Google API

Podľa toho, na aký účel časový spúšťač potrebujeme, si vyberieme frekvenciu spúšťania. Časové spúšťanie je možné využiť napríklad pre pravidelnú automatickú kontrolu doručenej pošty, kontrolu stavu nejakého webu a podobne.

Pre náš test si skúsme vybrať voľbu Počítadlo minút a v poslednej voľbe "Vyberte interval v minútach" nastavíme "Každých 30 minút". Celý panel by teda mal vyzerať takto:

Nastavenie časového spúšťače v Google Apps Script - Google API

Klikneme na Uložiť. Ďalší postup je rovnaký, aký sme už absolvovali v minulej lekcii. Skript je potreba autorizovať. Akonáhle autorizáciu odklikáme, spúšťač sa objaví v zozname.

Od tejto chvíle by sa mala funkcia každých 30 minút spustiť a do bunky A1 zapísať dátum a čas, kedy sa funkcia aktivovala. Ak si teraz tabuľku kedykoľvek otvoríme, nemal by byť čas v bunke A1 staršie ako 30 minút od aktuálneho času.

A ak si aktualizujeme záložku, kde sme definovali časový spúšťač, uvidíme taktiež čas posledného spustenia funkcie a percento chýb pri spustení funkcie.

Poznámky k časovým spúšťačom

Je potrebné upozorniť, že Google negarantuje presný čas, kedy sa funkcia spustí, dokonca zámerne časové funkcie spúšťa s určitým rozptylom, takže časové spúšťače nemožno používať na činnosti, kde je potreba dodržať presný čas spustenia.

Tiež si všimnite, že časový interval v minútach si nedá nastaviť ľubovoľne, ale iba z pevne daných hodnôt.

Je asi celkom jasné, že v jednom projekte si môžeme vytvoriť viac časových spúšťačov a každý z nich môže mať svoj vlastný interval spúšťania a tiež vykonávať inú činnosť, teda spúšťať inú funkciu.

Pretože všetky spúšťače beží na pozadí, je veľmi užitočné, že nám Google v prípade havárie spúšťače pošle e-mail s bližším popisom chyby. Ako často má súhrn chýb posielať sme si nastavili pri zriaďovaní spúšťače. A samozrejme interval môžeme v nastavení spúšťača kedykoľvek zmeniť.

Limity časovačov a Apps Script všeobecne

V Apps Script sú pre rad vecí nastavené limity, ktoré skripty nemôžu prekročiť. Všetky je prehľadne nájdete na tejto stránke.

Limity sa líšia podľa verzie účtu, ktorý používame, a celkom logicky sú najtvrdšie pre účty zdarma, teda pre Gmail verzii. A samozrejme čím drahšia verzia, tým je spravidla limit vyšší.

Ak sa napr. Pozrieme na riadok Triggers total runtime, uvidíme tam pre Gmail verziu hodnotu 90 min / day. Inými slovami, všetky spúšťače definované na našom účte, môžu za 24 hodín bežať dohromady len 90 minút.

A je samozrejme jedno, v ktorom skriptu spúšťač je, čas behu všetkých spúšťačov sa sčíta a po jeho prekročení všetky spúšťače prestanú fungovať.

V prehľade chýb, ktorý nám Google pošle, sa potom dozvieme v ktorých časoch sa spúšťač nevykonal pre prekročenie časového limitu. Po ukončení "dňa" (myslím, že Google používa pacifický čas) sa limit vynuluje a skripty sa opäť rozbehnú.

Takže kedykoľvek sa budeme chcieť pustiť do nejakého väčšieho projektu v Apps Script, je dobré sa na aktuálne limity pozrieť a urobiť si prepočet, či sa s naším účtom do limitov vojdeme.

Povedzme, že si napíšeme skript, ktorý bude kontrolovať stav nejakého webu. Ja mám napríklad skript, ktorý mi stráži dobíjacie akcie kaktusov a posiela mi e-mail, keď sa akcia koná.

Ak doba jedného behu skriptu bude 10 sekúnd a budeme ho potrebovať spúšťať každú minútu, potom jednoduchým prepočtom zistíme, že časové spúšťače na Gmail účtu na tento účel nebudú to pravé.

Ale napríklad už základná platená verzia (stojí 5,2 € mesačne na osobu) má pre spúšťače docela veľkorysý limit 6 hodín.

Spúšťače riadené z kalendára

Ešte sa zmienime o jednej možnosti využitia spúšťačov.

V editore skriptov v menu vyberieme Upraviť -> Spúšťače aktuálneho projektu. Klikneme vpravo dole na tlačidlo Pridať spúšťač a vo voľbe Vyberte zdroj udalosti si miesto Riadené časom nastavíme Z kalendára.

Je potrebné uviesť e-mail majiteľa kalendára, celé nastavenie potom bude vyzerať napríklad takto:

Spúšťač spúšťaný zmenou v kalendári v Apps Script - Google API

Ako je z nastavení asi jasné, akonáhle dôjde v kalendári k zmene, spúšťač sa spustí. Kalendár samozrejme nemusí patriť priamo nám, stačí, že pre nás bude nazdieľaný.

A nemusí byť nazdieľaný len pre nás, ale môže to byť povedzme kalendár zdieľaný pre celé jedno oddelenie vo firme.

Pri každej zmene v kalendári sa automaticky spustí skript, ktorý kalendár prejde, vyhodnotí zmeny a vykoná nejakú akciu.

Povedzme, že vyhodnotí koľko z našich kamarátov už odpovedalo na našu pozvánku na bowling a ak dostatočný počet odpovedal áno, potom nám pošle e-mail s pripomienkou, aby sme na večer rezervovali miesto. Nie, na toto asi nemá cenu písať skript, ale určite vás napadne rad lepších využitie.

Opakovaná autorizácie spúšťače

A ešte posledná poznámka. Pri vytváraní spúšťače sme skript autorizovali. Teraz funkciu, ktorú volá spúšťač, upravíme a pridáme do nej povedzme odoslanie e-mailu.

Čo sa stane? Spúšťač je už vytvorený, takže autorizácie sa nespustí, ale skript nemá potrebné práva, preto jeho prevedenie havaruje a dozvieme sa to zo všeobecného e-mailu chýb, ktorý nám Google pošle.

Ako to opraviť? Samozrejme môžeme spúšťač zmazať a vytvoriť znova, potom sa autorizácia spustí automaticky. A alebo použijeme jednoduchší spôsob a funkciu, ktorú spúšťač volá, spustíme ručne z editora skriptov. Tým sa vyvolá autorizácia, potvrdíme nový rozsah práv a spúšťač môže bežať.

Páči sa vám Apps Script a tento seriál? Potom nezabudnite na hodnotenie ;-)

Vyhovoval by vám rýchlejší postup, alebo naopak potrebujete veci vysvetliť podrobnejšie? Alebo by ste na vysvetlenie niektorých vecí uvítali video? Chceli by ste nasdílet príklady, ktoré opisujem? Napíšte mi pripomienky aj otázky do komentárov, budem rád za každú spätnú väzbu.

V budúcej lekcii, Google Apps Script - Získanie externých dát - Kurzy ČNB I , si ukážeme praktické využitie toho, čo sme sa zatiaľ naučili, na sťahovanie kurzového lístka ČNB.


 

Predchádzajúci článok
Google Apps Script - Jednoduché a inštalované spúšťače
Všetky články v sekcii
Google API
Preskočiť článok
(neodporúčame)
Google Apps Script - Získanie externých dát - Kurzy ČNB I
Článok pre vás napísal Jan Hora
Avatar
Užívateľské hodnotenie:
Ešte nikto nehodnotil, buď prvý!
Autor se poslední 4 roky věnuje programování pro Google Suite.
Aktivity