Geek tričko zdarma Geek tričko zdarma
Tričko zdarma! Stačí před dobitím bodů použít kód TRIKO15. Více informací zde

Google Apps Script - Časové spouštěče

Unicorn College Tento obsah je dostupný zdarma v rámci projektu IT lidem.
Vydávání, hosting a aktualizace umožňují jeho sponzoři.

V minulé lekci, Google Apps Script - Jednoduché a instalované spouštěče, jsme si ukázali použití jednoduchého spouštěče (triggeru), funkce onOpen(), a pak její proměnu na instalovaný spouštěč, který již bylo nutné autorizovat. V dnešní lekci si ukážeme, jak používat spouštěče řízené časem.

Vytvoření tabulky a skriptu

Vytvořme si novou tabulku, pojmenujeme ji, z menu zvolíme Nástroje -> Editor skriptu, skript si opět pojmenujeme a zkusíme napsat tuto funkci:

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

První řádek již znáte, vrátí aktuální list tabulky, ke které je skript přibalen. Na druhém vybereme buňku A1. Úplně stejně bychom ji mohli vybrat zápisem sheet.getRange(1, 1). Na dalším řádku si do proměnné akt_cas uložíme aktuální datum a čas. A na posledním řádku tuto hodnotu uložíme do buňky A1.

Funkce tik() je schválně zapsaná velmi "upovídaně". Mohli bychom ji samozřejmě podstatně zkrátit a fungovala by úplně stejně. Zkrácený zápis by vypadal takto:

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

Pravidelné spouštění

Nyní si nastavíme pravidelné spouštění této funkce. Postup je úplně stejný jako v minulé lekci. V editoru skriptů v menu vybereme Upravit -> Spouštěče aktuálního projektu. Klikneme vpravo dole na tlačítko Přidat spouštěč, otevře se nám panel pro nastavení spouštění funkce.

Funkci tik() máme již vybranou, protože je to jediná funkce, kterou v editoru máme. Ve výběru Vybrat implementaci je jen jediná možnost Head, takže opět není co vybírat. Volbu Vyberte zdroj události nastavíme na Řízeno časem. Když si pak rozbalíme volbu Vyberte typ časového spouštěče, bude nabídka vypadat takto:

Výběr frekvence spouštění Google Apps skriptu

Podle toho, k jakému účelu časový spouštěč potřebujeme, si vybereme frekvenci spouštění. Časové spouštění je možné využít například pro pravidelnou automatickou kontrolu doručené pošty, kontrolu stavu nějakého webu a podobně.

Pro náš test si zkusme vybrat volbu Počítadlo minut a v poslední volbě "Vyberte interval v minutách" nastavíme "Každých 30 minut". Celý panel by tedy měl vypadat takto:

Nastavení časového spouštěče v Google Apps Script

Klikneme na Uložit. Další postup je stejný, jaký jsme již absolvovali v minulé lekci. Skript je potřeba autorizovat. Jakmile autorizaci odklikáme, spouštěč se objeví v seznamu.

Od této chvíle by se měla funkce každých 30 minut spustit a do buňky A1 zapsat datum a čas, kdy se funkce aktivovala. Pokud si nyní tabulku kdykoliv otevřeme, neměl by být čas v buňce A1 starší než 30 minut od aktuálního času.

A pokud si aktualizujeme záložku, kde jsme definovali časový spouštěč, uvidíme rovněž čas posledního spuštění funkce a procento chyb při spuštění funkce.

Poznámky k časovým spouštěčům

Je potřeba upozornit, že Google negarantuje přesné časy, kdy se funkce spustí, dokonce záměrně časové funkce spouští s určitým rozptylem, takže časové spouštěče nelze používat pro činnosti, kde je potřeba dodržet přesný čas spuštění.

Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!

Také si všimněte, že časový interval v minutách si nelze nastavit libovolně, ale pouze z pevně daných hodnot.

Je asi celkem jasné, že v jednom projektu si můžeme vytvořit více časových spouštěčů a každý z nich může mít svůj vlastní interval spouštění a také provádět jinou činnost, tedy spouštět jinou funkci.

Protože všechny spouštěče běží na pozadí, je velice užitečné, že nám Google v případě havárie spouštěče pošle e-mail s bližším popisem chyby. Jak často má souhrn chyb posílat jsme si nastavili při zřizování spouštěče. A samozřejmě interval můžeme v nastavení spouštěče kdykoliv změnit.

Limity časovačů a Apps Scriptu obecně

V Apps Scriptu jsou pro řadu věcí nastavené limity, které skripty nemohou překročit. Všechny je přehledně najdete na této stránce.

Limity se liší podle verze účtu, který používáme, a celkem logicky jsou nejtvrdší pro účty zdarma, tedy pro Gmail verzi. A samozřejmě čím dražší verze, tím je zpravidla limit vyšší.

Pokud se např. podíváme na řádek Triggers total runtime, uvidíme tam pro Gmail verzi hodnotu 90 min/day. Jinými slovy, všechny spouštěče definované na našem účtu, mohou za 24 hodin běžet dohromady jen 90 minut.

A je samozřejmě jedno, v kterém skriptu spouštěč je, čas běhu všech spouštěčů se sčítá a po jeho překročení všechny spouštěče přestanou fungovat.

V přehledu chyb, který nám Google pošle, se pak dozvíme v kterých časech se spouštěč neprovedl pro překročení časového limitu. Po ukončení "dne" (myslím, že Google používá pacifický čas) se limit vynuluje a skripty se opět rozběhnou.

Takže kdykoliv se budeme chtít pustit do nějakého většího projektu v Apps Scriptu, je dobré se na aktuální limity podívat a udělat si propočet, jestli se s naším účtem do limitů vejdeme.

Řekněme, že si napíšeme skript, který bude kontrolovat stav nějakého webu. Já mám například skript, který mi hlídá dobíjecí akce Kaktusu a posílá mi e-mail, když se akce koná.

Pokud doba jednoho běhu skriptu bude 10 vteřin a budeme ho potřebovat spouštět každou minutu, pak jednoduchým propočtem zjistíme, že časové spouštěče na Gmail účtu pro tento účel nebudou to pravé.

Ale třeba již základní placená verze (stojí 5,2€ měsíčně na osobu) má pro spouštěče docela velkorysý limit 6 hodin.

Spouštěče řízené z kalendáře

Ještě se zmíníme o jedné možnosti využití spouštěčů.

V editoru skriptů v menu vybereme Upravit -> Spouštěče aktuálního projektu. Klikneme vpravo dole na tlačítko Přidat spouštěč a ve volbě Vyberte zdroj události si místo Řízeno časem nastavíme Z kalendáře.

Je třeba uvést e-mail majitele kalendáře, celé nastavení pak bude vypadat třeba takto:

Spouštěč spouštěný změnou v kalendáři v Apps Script

Jak je z nastavení asi jasné, jakmile dojde v kalendáři ke změně, spouštěč se spustí. Kalendář samozřejmě nemusí patřit přímo nám, stačí, že pro nás bude nasdílený.

A nemusí být nasdílený jen pro nás, ale může to být řekněme kalendář sdílený pro celé jedno oddělení ve firmě.

Při každé změně v kalendáři se automaticky spustí skript, který kalendář projde, vyhodnotí změny a provede nějakou akci.

Řekněme, že vyhodnotí kolik z našich kamarádů již odpovědělo na naši pozvánku na bowling a pokud dostatečný počet odpověděl ano, pak nám pošle e-mail s připomínkou, abychom na večer zamluvili místo. Ne, na tohle asi nemá cenu psát skript, ale určitě vás napadne řada lepších využití.

Opakovaná autorizace spouštěče

A ještě poslední poznámka. Při vytváření spouštěče jsme skript autorizovali. Nyní funkci, kterou volá spouštěč, upravíme a přidáme do ní řekněme odeslání e-mailu.

Co se stane? Spouštěč je již vytvořený, takže autorizace se nespustí, ale skript nemá potřebná práva, proto jeho provedení havaruje a dozvíme se to ze souhrnného e-mailu chyb, který nám Google pošle.

Jak to opravit? Samozřejmě můžeme spouštěč smazat a vytvořit znovu, pak se autorizace spustí automaticky. A nebo použijeme jednodušší způsob a funkci, kterou spouštěč volá, spustíme ručně z editoru skriptů. Tím se vyvolá autorizace, potvrdíme nový rozsah práv a spouštěč může běžet.

Líbí se vám Apps Script a tento seriál? Pak nezapomeňte na hodnocení ;-)

Vyhovoval by vám rychlejší postup, nebo naopak potřebujete věci vysvětlit podrobněji? Nebo byste na vysvětlení některých věcí uvítali video? Chtěli byste nasdílet příklady, které popisuji? Napište mi připomínky i dotazy do komentářů, budu rád za každou zpětnou vazbu.


 

 

Článek pro vás napsal Jan Hora
Avatar
Jak se ti líbí článek?
Ještě nikdo nehodnotil, buď první!
Autor se poslední 4 roky věnuje programování pro Google Suite.
Předchozí článek
Google Apps Script - Jednoduché a instalované spouštěče
Všechny články v sekci
Google API
Aktivity (2)

 

 

Komentáře

Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zatím nikdo nevložil komentář - buď první!