Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

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:

Ručné spustenie funkcie v editore skriptov. - Google API

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

Ručné spustenie funkcie v editore skriptov. - Google API

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:

Žiadosť o autorizáciu skriptu. - Google API

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

Výber účtu pri autorizácii skriptu. - Google API

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

Ďalší krok pri autorizácii skriptu. - Google API

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:

Ďalší krok pri autorizácii skriptu. - Google API

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:

Prehľad práv pri autorizácii skriptu. - Google API

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:

chybová hláška - Google API

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.


 

Predchádzajúci článok
Úvod do Google Apps Script
Všetky články v sekcii
Google API
Preskočiť článok
(neodporúčame)
Google Apps Script - Jednoduché a inštalované spúšťače
Článok pre vás napísal Jan Hora
Avatar
Užívateľské hodnotenie:
Ešte nikto nehodnotil, buď prvý!
Autor se poslední 4 roky věnuje programování pro Google Suite.
Aktivity