2. diel - Google Apps Script - Prvé spustenie funkcie
V prvej lekcii, Úvod do Google Apps Script , sme sa zoznámili s úplnými základmi Google Apps Script, napísali sme si našu prvú funkciu a dnes si ukážeme, ako možno funkciu spustiť a čo budeme musieť urobiť, než sa prvýkrát naozaj spustí.
Spustenie funkcie
Spustiť funkciu možno niekoľkými spôsobmi, my si ju teraz spustíme tak povediac z ruky.
Menu
Jednou možnosťou je cez menu, kde vyberieme Spustiť - Spustiť funkciu - myFunction tak, ako to vidíte na nasledujúcom obrázku:
Vo chvíli, kedy by sme mali funkcií viac, vybrali by sme jednu z nich zo zoznamu.
Spustiť alebo ladiť
Druhý spôsob je o niečo rýchlejší, vyberieme funkciu zo zoznamu (my máme len jednu, takže je priamo vybraná) a klikneme na ikonu spustiť alebo ladiť:
Pri spustení sa funkcia vykoná, pri ladení máme možnosť jej beh zastaviť a krokovať. To si ukážeme neskôr. Hodí sa nám to najmä v prípadoch, keď funkcia nefunguje správne a hľadáme príčinu.
Vyberte si jeden zo spôsobov a funkciu spustite. Výsledkom je nasledovné varovanie:
Čo to znamená? Skript, ktorý sme práve napísali a chceme ho spustiť, bude vykonávať nejaké zmeny vo vašej tabuľke. V tomto prípade len čítať hodnotu z bunky a nastavovať jej farbu, ale mohol by vykonávať čokoľvek iné, mazať dáta, vyhľadávať konkrétne údaje a meniť ich na iné a podobne. Preto než sa skript prvýkrát spustí, musíme to povoliť.
Oprávnenie
Kliknite preto na Skontrolovať oprávnenia. Objaví sa ďalší panel, kde vyberiete účet, pre ktorý chcete beh funkcie povoliť. Možno máte len jeden účet, avšak je možné, že ich máte niekoľko a beh funkcie chcete povoliť pre iný, než ku ktorému ste aktuálne prihlásení.
Ešte to nekončí, nasleduje ďalší panel, kde vás Google poučí, že táto aplikácia nie je overená. S trochou irónie by sa dalo poznamenať, že ju ťažko mohol ktokoľvek overiť, keď sme si ju práve teraz napísali.
Avšak Google kladie na bezpečie užívateľov veľký dôraz, takže rovnakým spôsobom varuje u všetkých skriptov. Nezostáva, než sa s tým zmieriť a tých niekoľko kliknutí navyše urobiť.
Späť do bezpečia nechceme, potrebujeme vyskúšať funkciu, ktorú sme vytvorili, preto klikneme vľavo na odkaz Rozšírené možnosti. Panel sa mierne zmení, dole sa objaví možnosť pokročiť ďalej:
Pretože máte pre strach urobené, kliknite na odkaz Prejsť na web prvej skript (nebezpečné). Objaví sa ďalší panel, tentoraz s prehľadom práv, ktoré skriptu povolíte:
Dobre si prečítajte, čo skriptu povoľujete. Áno, naozaj, akonáhle kliknete na Povoliť, bude skript mať právo robiť s vašimi tabuľkami a ich dátami prakticky čokoľvek. A to so všetkými tabuľkami na vašom Disku, alebo aj s tabuľkami, ktoré s vami niekto zdieľa. Takže varovanie Google neberte na ľahkú váhu, hlavne v prípade, že budete skúšať skripty nájdené niekde na webe a nebudete si úplne istí, čo presne robia.
Kto používa Suite dlhšie, asi namietne, že v tomto konkrétnom prípade skript nemôže do ostatných tabuliek zasiahnuť. Jednoducho preto, že nemá ako by ich našiel, nemá totiž právo hľadať na vašom Disku. Je to samozrejme pravda, avšak pri prideľovaní práv cudzím skriptom je obozretnosť určite na mieste.
Skriptu pridelené práva možno neskôr samozrejme zase zrušiť, ďalej si môžeme ukázať ako.
Kliknite teda na Povoliť, panel zmizne a funkcia sa spustí. Akonáhle dobehne, prepnite sa do tabuľky. Bunka, ktorá je aktuálne vybratá, by mala mať červené pozadie.
Skúste vybrať inú bunku a na záložke sa skriptom spustiť funkciu
myFunction()
znova. Opäť by sa mala vybraná bunka podfarbiť
červeno.
Volanie funkcie z tabuľky
Teraz si ukážeme, ako naši obarvovací funkciu zavolať priamo z tabuľky.
Najprv ju premenujeme, aby názov funkcie vyjadroval čo vlastne robí. Bude teraz vyzerať 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 Tabuľkách, Dokumentoch, Prozentacích a formuláre dopĺňať do menu vlastné položky a priraďovať im volanie funkcií. Naša funkcia, ktorá to urobí, môže vyzerať napríklad takto:
function onOpen() { var ui = SpreadsheetApp.getUi(); ui.createMenu('Moje Menu') .addItem('Obarvi buňku', 'obarvi_bunku') .addToUi(); }
Poďme si kód rozobrať. prvý riadok
var ui = SpreadsheetApp.getUi();
získa UI (user interface, čiže užívateľské rozhranie) tabuľky. Ďalší riadok
ui.createMenu('Moje Menu');
v tomto UI vytvorí nové menu s názvom Moje Menu. riadok
.addItem('Obarvi buňku', 'obarvi_bunku')
do menu doplní novú položku a nastaví aká funkcia sa po kliknutí na položku zavolá. A posledný riadok vytvorené menu doplní k existujúcemu UI, čiže sa postará o vlastné zobrazenie menu.
Možno sú vám divné riadky začínajúce bodkou, ale už sme si hovorili, že jednotlivé metódy sa dajú reťaziť pomocou bodky. Ide teda vlastne o zápis:
ui.createMenu('Moje Menu').addItem('Obarvi buňku', 'obarvi_bunku').addToUi();
len prehľadnejšie zapísaný. Ak by sme reťazenie pomocou bodky nevyužili, museli by sme funkciu zapísať takto:
function onOpen() { var ui = SpreadsheetApp.getUi(); var menu = ui.createMenu('Moje Menu'); menu.addItem('Obarvi buňku', 'obarvi_bunku'); menu.addToUi(); }
A prečo sme celú funkciu nazvali zrovna onOpen()
? Funkcia s
týmto názvom sa automaticky volá pri otvorení tabuľky. Ak by sme ju nazvali
inak, museli by sme jej automatické spustenie nastaviť pomocou takzvaných
spúšťačov (triggerov), o ktorých si povieme na inom mieste.
Skúste sa prepnúť do tabuľky a znova ju načítať. Ak ste vo funkciách
neurobili chybu, mali by ste v menu za Pomocník vidieť novú položku
Moje menu. Vyberte v tabuľke niektorú bunku az menu vyberte
Moje menu - Odfarbi bunku. Ak sa farba pozadia aktuálnej bunky
zmenila na červenú, je všetko v poriadku a funkcie sa vykonala. V prípade,
že máte vo funkcii obarvi_bunku()
nejakú chybu, potom sa bunka
nezadarbia a pravdepodobne sa vám ukáže chybové hlásenie, ktoré môže
vyzerať napríklad takto:
Tu bol príčinou chyby preklep, kedy som na poslednom riadku zmenil správny zápis
akt_bunka.setBackground('red');
na
akt_banka.setBackground('red');
a skript ohlásil, že premennú akt_banka
nepozná. Podobná
chyba sa nájde a odstráni ľahko, ale bohužiaľ sa pri programovaní dajú
urobiť chyby oveľa záludnější, ktoré sa veľmi zle hľadajú. Viac o
hľadaní a odstraňovaní chýb si povieme v nejakom budúcom
pokračovaní.
Nabudúce, v lekcii Google Apps Script - Jednoduché a inštalované spúšťače , sa budeme venovať spúšťačom.