Předvánoční slevová akce PHP týden
Pouze tento týden sleva až 80 % na PHP e-learning!
Využij předvánočních slev a získej od nás 20 % bodů zdarma! Více zde

Lekce 1 - Úvod do Google Apps Script

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

Google Suite je sada cloudových nástrojů pro firmy i jednotlivce, určitě z nich znáte alespoň Gmail. Je jich samozřejmě mnohem více, Disk pro uložení souborů, Kalendář, Dokumenty, Tabulky, Prezentace, Fotky, Formuláře, Hangouts nebo Chat pro komunikaci a další.

Google Apps Script (často se můžete setkat se zkratkou GAS) je jednoduchý skriptovací jazyk založený na JavaScriptu, pomocí kterého se řada částí G Suite dá ovládat a vylepšovat.

Můžete jej použít na drobnosti, které vám ale při práci s G Suite mohou ušetřit spoustu času a práce. A samozřejmě nemusíte zůstat u drobností, v Apps Scriptu můžete dělat plnohodnotné aplikace a využít jeho propojení na další cloudové služby Google.

Příklady využití

Ukažme si několik příkladů využití této technologie:

Příklad 1

Denně vám z několika adres chodí e-mail, který v příloze obsahuje CSV soubor. Vy musíte data z CSV souborů importovat do Tabulek. Stejnou práci zastane i skript. Bude pravidelně kontrolovat vaši příchozí poštu a pokud přijde e-mail z konkrétní adresy a bude obsahovat v příloze CSV soubor, skript přílohu uloží na Disk a importuje data z přílohy do Tabulky.

Příklad 2

Na webu používáte Google Formulář, ale musíte denně kontrolovat, zda někdo formulář využil a případně na jeho zprávu reagovat. Formulář se dá snadno doplnit o skript, který se automaticky spustí ve chvíli, kdy je formulář odeslán. Skript vám může na e-mail zaslat upozornění, že někdo formulář použil. Kromě toho může zákazníkovi na jeho e-mail (který zadal do formuláře) zaslat poděkování a rekapitulaci jeho odpovědí.

Potřebné nástroje

Co pro první pokusy s Google Apps Scriptem potřebujete?

  • Google účet - postačí zdarma dostupná verze. Zřídit účet si můžete na adrese https://accounts.google.com/SignUp?…
  • alespoň základní znalost angličtiny, chybové hlášky i dokumentace jsou v angličtině
  • hodí se jakékoliv zkušenosti s programováním

Začínáme

Přihlaste se do svého Google účtu, otevřete si aplikaci Disk a jdeme na to.

Nejdříve maličko teorie. Skripty, které budete vytvářet, mohou být buď jako samostatné soubory na Disku, nebo mohou být součástí Tabulek, Dokumentů nebo třeba Formulářů (v nápovědě je najdete pod termínem bounded).

Oba dva druhy mohou dělat v zásadě totéž, ale je lepší skryté skripty používat v případě, že opravdu pracují s jednou konkrétní tabulkou nebo dokumentem. Pokud se má skript používat pro různé dokumenty, je rozhodně lepší mít ho jako samostatný soubor.

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

Skripty napsané v GAS běží na serveru, ne v prohlížeči. Později si ukážeme, že je možné napsat skripty, které budou mít část běžící v prohlížeči (napsanou v JavaScriptu) a druhou část běžící na serveru (napsanou v GAS) a obě části spolu mohou komunikovat.

Bounded skript pro tabulku

Jako první si ukážeme jak vytvořit bounded skript pro tabulku.

Vytvořte na Disku novou tabulku, pojmenujte ji Příklad 1 a v menu zvolte Nástroje - Editor skriptu. Otevře se vám nová záložka s editorem, ve které budete psát svůj první skript. Nejprve je potřeba skript pojmenovat. Vlevo nahoře klikněte na text Projekt bez názvu a zadejte nějaký název, třeba opět Příklad 1. Na názvu nezáleží, ale pokud máte otevřenou tabulku a na druhé záložce k ní přibalený skript, je dobré poznat na první pohled, že k sobě patří.

Editor by teď měl vypadat nějak takto:

Editor skriptu

Než začneme psát náš první skript, tak opět pár poznámek. V Apps Scriptu máte k dispozici mnoho knihoven, každá slouží k práci s jinou částí Google Suite. Nemusíte si jejich názvy pamatovat, pokud v Editoru skriptů stisknete Ctrl + Mezerník, zobrazí se vám jejich seznam, ze kterého knihovnu vyberete a stiskem Enter vložíte její název do Editoru.

Obdobně pak v dalším kroku vyberete metodu, čili co by měla knihovna provést. Pokud máte seznam knihoven nebo metod zobrazený a znáte název, který chcete vybrat, stiskněte odpovídající znaky na klávesnici, abyste se v seznamu dostali na požadované místo.

Náš první skript by měl pracovat s tabulkou a na to budeme potřebovat knihovnu s názvem SpreadsheetApp. Takže si stiskem Ctrl + Mezerník zobrazte seznam knihoven, poté stiskněte první písmena názvu knihovny, tedy SP, a stiskněte Enter, název knihovny se vám vloží do editoru. Pokud hned za název knihovny doplníte tečku, nabídne se seznam metod, které lze zavolat.

Knihovnu máme, teď potřebujeme nějak vybrat tabulku, se kterou chceme pracovat. Protože je skript přibalený k tabulce Příklad 1, můžeme pro její výběr použít metodu getActive(), čili vezmi právě aktivní tabulku. Metodu vybereme ze seznamu, který se nám nabídne po doplnění tečky za název knihovny.

Tím jsme získali tabulku, která ale může mít mnoho listů. Momentálně vybraný list opět získáme podobně jako celou tabulku, tentokrát metodou getActiveSheet().

Funkce myFunction() pak může vypadat třeba takto:

function myFunction() {
  var akt_tab = SpreadsheetApp.getActive();
  var akt_list = akt_tab.getActiveSheet();
}

V proměnné akt_tab máme celou tabulku, v proměnné akt_list právě vybraný list. Oba řádky můžeme spojit do jednoho a v jednom kroku vybrat přímo aktivní list, tedy napsat:

var akt_list = SpreadsheetApp.getActive().getActiveSheet();

Výběr aktivního listu lze vynechat a můžeme přímo vybrat aktivní list, takto:

var akt_list = SpreadsheetApp.getActiveSheet();

List bychom vybraný měli, teď zkusíme vybrat na listu nějakou buňku. Pokud budeme chtít pracovat s buňkou, která je momentálně vybraná, použijeme metodu getActiveCell(). Tu musíme zavolat pro správný objekt, tedy list, protože buňka je součástí listu:

var akt_bunka = akt_list.getActiveCell();

Pokud bychom chtěli vybrat jinou než aktivní buňku, použili bychom metodu getRange(). Parametry getRange() můžeme zadat několika způsoby:

var range_1 = akt_list.getRange(1, 2);

První parametr je číslo řádku, druhý číslo sloupce. Řádky i sloupce se číslují od jedničky, tímto příkazem bychom tedy vybrali buňku B1. Pro výběr větší oblasti přidáme další 2 parametry, počet řádků a počet sloupců. Takto bychom vybrali oblast buněk B1:C3.

var range_1 = akt_list.getRange(1, 2, 3, 2);

Poslední možností jak oblast, kterou chceme, vybrat, je právě zápis ve tvaru C5:E15. Volání metody bychom pak zapsali například:

var range_1 = akt_list.getRange("C3:F8");

Ať už jsme vybrali jednu buňku nebo větší část listu, v obou případech se vybraná část listu nazývá range, česky řekněme oblast nebo rozsah.

S vybranou částí listu teď můžeme pracovat, vložit do ní data, načíst data a provést s nimi nějaký výpočet, smazat obsah buněk, nastavit velikost písma i barvu, orámování, zarovnání atd.

Funkce, která by vybrala právě aktivní buňku v tabulce, přečetla hodnotu v ní uloženou a nastavila pozadí buňky na červenou barvu, by pak vypadala třeba takto:

function myFunction() {
  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
}

Tak, máme napsanou první funkci a v další lekci, Google Apps Script - První spuštění funkce, si ukážeme jak ji spustit.


 

 

Č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 Scripty - Kalendář
Všechny články v sekci
Google API
Miniatura
Následující článek
Google Apps Script - První spuštění funkce
Aktivity (4)

 

 

Komentáře

Avatar
JOF
Tým ITnetwork
Avatar
JOF:7. září 11:29

Ahoj,
je to vybírání buněk správně? Tipnul bych, že příkaz

var range_1 = akt_list.getRange(1, 2, 3, 2);

nevybere oblast B1:C3 (jak je uvedeno v článku), ale B1:B3.
Podobně matoucí mi přijde zmínit oblast C5:E15, ale do kódu dát

var range_1 = akt_list.getRange("C3:F8");
 
Odpovědět
7. září 11:29
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!
Avatar
Jan Hora
Redaktor
Avatar
Odpovídá na JOF
Jan Hora:7. září 14:01

Ahoj,

to C5:E15 a C3:F8 je samozřejmě renonc, který jsem přehlídnul.
To první je správně, klidně si to vyzkoušej.
Ty parametry jsou getRange(row, column, numRows, numColumns)
Čili první 2 parametry vyberou levý horní roh, řádek 1, sloupec 2, takže levý horní roh bude buňka B1. No a počet řádků je 3 a sloupců 2, takže pravý dolní roh toho výběru bude C3.

Zdraví Honza

 
Odpovědět
7. září 14:01
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.

Zobrazeno 2 zpráv z 2.