NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!

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

V předchozí lekci, Úvod do Google Apps Script, jsme se seznámili s úplnými základy Google Apps Scriptu a napsali jsme si naši první funkci.

Dnes si ukážeme, jak lze spustit funkci v Google Apps Scriptu 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ů. - Google API

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ů. - Google API

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. - Google API

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. - Google API

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. - Google API

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. - Google API

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. - Google API

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, Prezentací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 - Google API

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

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


 

Předchozí článek
Úvod do Google Apps Script
Všechny články v sekci
Google API
Přeskočit článek
(nedoporučujeme)
Google Apps Script - Jednoduché a instalované spouštěče
Článek pro vás napsal Jan Hora
Avatar
Uživatelské hodnocení:
20 hlasů
Autor se poslední 4 roky věnuje programování pro Google Suite.
Aktivity