Geek tričko zdarma Geek tričko zdarma
Hledáme grafika na pohodovou brigádu v Blenderu nebo programátora na hry v PyGame. Máš zájem? Napiš nám na redakce [zavináč] itnetwork.cz!
Tričko zdarma! Stačí před dobitím bodů použít kód TRIKO15. Více informací zde

Lekce 2 - Google Apps Script - První spuštění funkce

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 první lekci, Úvod do Google Apps Script, jsme se seznámili s úplnými základy Google Apps Scriptu, napsali jsme si naši první funkci a dnes si ukážeme, jak lze funkci spustit a co budeme muset udělat, než se poprvé opravdu spustí.

Spuštění funkce

Spustit funkci lze několika způsoby, my si ji teď spustíme tak říkajíc z ruky.

Menu

Jednou možností je přes menu, kde vybereme Spustit - Spustit funkci - myFunction tak, jak to vidíte na následujícím obrázku:

Ruční spuštění funkce v editoru skriptů.

Ve chvíli, kdy bychom měli funkcí více, vybrali bychom jednu z nich ze seznamu.

Spustit nebo ladit

Druhý způsob je o něco rychlejší, vybereme funkci ze seznamu (my máme jen jednu, takže je přímo vybraná) a klikneme na ikonu spustit nebo ladit:

Ruční spuštění funkce v editoru skriptů.

Při spuštění se funkce provede, při ladění máme možnost její běh zastavit a krokovat. To si ukážeme později. Hodí se nám to zejména v případech, kdy funkce nefunguje správně a hledáme příčinu.

Vyberte si jeden ze způsobů a funkci spusťte. Výsledkem je následující varování:

Žádost o autorizaci skriptu.

Co to znamená? Skript, který jsme právě napsali a chceme jej spustit, bude provádět nějaké změny ve vaší tabulce. V tomto případě jen číst hodnotu z buňky a nastavovat její barvu, ale mohl by provádět cokoliv jiného, mazat data, vyhledávat konkrétní údaje a měnit je na jiné a podobně. Proto než se skript poprvé spustí, musíme to povolit.

Oprávnění

Klikněte proto na Zkontrolovat oprávnění. Objeví se další panel, kde vyberete účet, pro který chcete běh funkce povolit. Možná máte jen jeden účet, nicméně je možné, že jich máte několik a běh funkce chcete povolit pro jiný, než ke kterému jste aktuálně přihlášeni.

Výběr účtu při autorizaci skriptu.

Ještě to nekončí, následuje další panel, kde vás Google poučí, že tato aplikace není ověřená. S trochou ironie by se dalo poznamenat, že ji těžko mohl kdokoliv ověřit, když jsme si ji právě teď napsali.

Nicméně Google klade na bezpečí uživatelů velký důraz, takže stejným způsobem varuje u všech skriptů. Nezbývá, než se s tím smířit a těch několik kliknutí navíc udělat.

Další krok při autorizaci skriptu.
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!

Zpět do bezpečí nechceme, potřebujeme vyzkoušet funkci, kterou jsme vytvořili, proto klikneme vlevo na odkaz Rozšířené možnosti. Panel se mírně změní, dole se objeví možnost pokročit dál:

Další krok při autorizaci skriptu.

Protože máte pro strach uděláno, klikněte na odkaz Přejít na web první skript (nebezpečné). Objeví se další panel, tentokrát s přehledem práv, která skriptu povolíte:

Přehled práv při autorizaci skriptu.

Dobře si přečtěte, co skriptu povolujete. Ano, opravdu, jakmile kliknete na Povolit, bude skript mít právo dělat s vašimi tabulkami a jejich daty prakticky cokoliv. A to se všemi tabulkami na vašem Disku, nebo i s tabulkami, které s vámi někdo sdílí. Takže varování Google neberte na lehkou váhu, hlavně v případě, že budete zkoušet skripty nalezené někde na webu a nebudete si úplně jistí, co přesně dělají.

Kdo používá Suite déle, asi namítne, že v tomto konkrétním případě skript nemůže do ostatních tabulek zasáhnout. Jednoduše proto, že nemá jak by je našel, nemá totiž práva hledat na vašem Disku. Je to samozřejmě pravda, nicméně při přidělování práv cizím skriptům je obezřetnost určitě na místě.

Skriptu přidělená práva lze později samozřejmě zase zrušit, dále si můžeme ukázat jak.

Klikněte tedy na Povolit, panel zmizí a funkce se spustí. Jakmile doběhne, přepněte se do tabulky. Buňka, která je aktuálně vybraná, by měla mít červené pozadí.

Zkuste vybrat jinou buňku a na záložce se skriptem spustit funkci myFunction() znovu. Opět by se měla vybraná buňka podbarvit červeně.

Volání funkce z tabulky

Nyní si ukážeme, jak naši obarvovací funkci zavolat přímo z tabulky.

Nejprve ji přejmenujeme, aby název funkce vyjadřoval co vlastně dělá. Bude teď vypadat takto:

function obarvi_bunku() {
  var akt_list = SpreadsheetApp.getActiveSheet(); // vybere aktuální list
  var akt_bunka = akt_list.getCurrentCell(); // vybere aktuálně vybranou buňku
  var txt = akt_bunka.getValue(); // hodnotu z buňky uloží do proměnné txt
  akt_bunka.setBackground('red'); // obarví pozadí buňky na červeno
}

Apps Script může v Tabulkách, Dokumentech, Prozentacích a Formulářích doplňovat do menu vlastní položky a přiřazovat jim volání funkcí. Naše funkce, která to udělá, může vypadat třeba takto:

function onOpen() {
  var ui = SpreadsheetApp.getUi();
  ui.createMenu('Moje Menu')
      .addItem('Obarvi buňku', 'obarvi_bunku')
      .addToUi();
}

Pojďme si kód rozebrat. První řádek

var ui = SpreadsheetApp.getUi();

získá UI (user interface, čili uživatelské rozhraní) tabulky. Další řádek

ui.createMenu('Moje Menu');

v tomto UI vytvoří nové menu s názvem Moje Menu. Řádek

.addItem('Obarvi buňku', 'obarvi_bunku')

do menu doplní novou položku a nastaví jaká funkce se po kliknutí na položku zavolá. A poslední řádek vytvořené menu doplní ke stávajícímu UI, čili se postará o vlastní zobrazení menu.

Možná jsou vám divné řádky začínající tečkou, ale už jsme si říkali, že jednotlivé metody se dají řetězit pomocí tečky. Jde tedy vlastně o zápis:

ui.createMenu('Moje Menu').addItem('Obarvi buňku', 'obarvi_bunku').addToUi();

jen přehledněji zapsaný. Pokud bychom řetězení pomocí tečky nevyužili, museli bychom funkci zapsat takto:

function onOpen() {
  var ui = SpreadsheetApp.getUi();
  var menu = ui.createMenu('Moje Menu');
  menu.addItem('Obarvi buňku', 'obarvi_bunku');
  menu.addToUi();
}

A proč jsme celou funkci nazvali zrovna onOpen()? Funkce s tímto názvem se automaticky volá při otevření tabulky. Pokud bychom ji nazvali jinak, museli bychom její automatické spuštění nastavit pomocí takzvaných spouštěčů (triggerů), o kterých si řekneme na jiném místě.

Zkuste se přepnout do tabulky a znovu ji načíst. Pokud jste ve funkcích neudělali chybu, měli byste v menu za Nápověda vidět novou položku Moje menu. Vyberte v tabulce některou buňku a z menu zvolte Moje menu - Obarvi buňku. Pokud se barva pozadí aktuální buňky změnila na červenou, je všechno v pořádku a funkce se provedla. V případě, že máte ve funkci obarvi_bunku() nějakou chybu, pak se buňka neobarví a pravděpodobně se vám ukáže chybové hlášení, které může vypadat třeba takto:

Chybová hláška

Tady byl příčinou chyby překlep, kdy jsem na posledním řádku změnil správný zápis

akt_bunka.setBackground('red');

na

akt_banka.setBackground('red');

a skript ohlásil, že proměnnou akt_banka nezná. Podobná chyba se najde a odstraní snadno, ale bohužel se při programování dají udělat chyby mnohem záludnější, které se velmi špatně hledají. Více o hledání a odstraňování chyb si povíme v nějakém příštím pokračování.

Příště, v lekci Google Apps Script - Jednoduché a instalované spouštěče, se budeme věnovat spouštěčům.


 

 

Č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
Úvod do Google Apps Script
Všechny články v sekci
Google API
Miniatura
Následující článek
Google Apps Script - Jednoduché a instalované spouštěče
Aktivity (6)

 

 

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í!