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