Tabulky v práci
Co je GAS (Google Apps Script)?
Automatizace Tabulek Google – úvod
Každý týden upravit tabulku do stejné podoby. Smazat prázdné řádky z vložených dat. Označit řádky, které splňují podmínku. Tabulky jsou plné úkolů s pevnými kroky.
Takové úkoly automaticky vyřizuje GAS (Google Apps Script). Tento článek ukazuje, co GAS umí, kde začít a jak projít obrazovkami „autorizace“, na kterých se mnoho lidí napoprvé zasekne.
Co je GAS?
GAS je způsob, jakým Google spouští programy. Používá stejnou syntaxi jako JavaScript a ovládá Tabulky Google i Gmail, Kalendář Google, Disk Google a Formuláře Google.
Stačí účet Google. Je to zdarma a nic se neinstaluje: otevřete tabulku v prohlížeči a začněte psát. Program běží na serverech Googlu, ne na vašem počítači.
Zaznamenaná makra a GAS
Tabulky Google mají „makra“, která zaznamenají, co děláte, abyste to mohli libovolně opakovat. Záznam spustíte přes „Rozšíření“ → „Makra“ → „Zaznamenat makro“, pak vybíráte a píšete do buněk a vaše kroky se uloží jako kód GAS.
/** @OnlyCurrentDoc */
function myFunction() {
var spreadsheet = SpreadsheetApp.getActive();
spreadsheet.getRange('B2').activate();
spreadsheet.getCurrentCell().setValue('test');
spreadsheet.getActiveRangeList().setFontWeight('bold');
};Makro je tedy uvnitř GAS. I když mu dáte název jako „Test tučného“, funkce v kódu se jmenuje myFunction. Název v nabídce a název funkce se ukládají zvlášť.
Při záznamu zvolíte v pruhu dole „Použít absolutní odkazy“ nebo „Použít relativní odkazy“. Absolutní odkazy se uloží jako adresy buněk (B2), takže makro píše vždy na stejné místo bez ohledu na vybranou buňku. Relativní se uloží jako „o řádek níž než aktuální buňka“ a vycházejí z vybrané buňky.
Samotný záznam nezvládne tabulky s proměnnou délkou ani kroky závislé na podmínkách. Odtud dál čtete zaznamenaný kód a doplňujete ho.
Co lze s GAS dělat
- Smazat prázdné řádky z vložených dat a upravit záhlaví
- Projít částky nebo data a napsat do sloupce „Velká“ nebo „Po splatnosti“
- Přidat do tabulky vlastní nabídku a spouštět úlohy jako tlačítkem
- Vytvářet vlastní funkce pro buňky (vlastní funkce)
- Posílat e-maily přes Gmail podle tabulky
- Spouštět úlohu v pevný čas, třeba každé ráno v 8 hodin (spouštěče)
- Přepisovat odpovědi z Formulářů Google do jiného listu, jakmile přijdou
Ručně zabere každý z těchto úkolů od několika minut po desítky minut. Jednou napsaný kód pak stačí spustit kliknutím v nabídce – nebo běží úplně sám.
Jak začít s GAS
- Otevřete tabulku a zvolte „Rozšíření“ → „Apps Script“
- Editor se otevře na nové kartě: vlevo „Kód.gs“, vpravo
function myFunction() { } - Napište kód do
{ }a uložte (Ctrl+S, na Macu ⌘+S) - Klikněte nahoře na „▷ Spustit“. Výsledek se zobrazí dole v „Protokolu provádění“
function myFunction() {
const sheet = SpreadsheetApp.getActiveSheet();
const value = sheet.getRange('A1').getValue();
Logger.log(value);
sheet.getRange('B1').setValue('Zkontrolováno');
}Logger.log zapíše hodnotu do protokolu provádění. Čísla se zobrazují s desetinnou tečkou, například 120.0 (console.log ukáže 120). Když něco nefunguje podle očekávání, zkontrolujte nejdřív hodnoty v protokolu.
Obrazovky autorizace při prvním spuštění
Když svůj kód spustíte poprvé, zobrazí se obrazovka s dotazem, zda skript smí číst a upravovat vaši tabulku. Tady se mnoho lidí zasekne, tak si to projdeme krok za krokem.
- „Je vyžadována autorizace“ → Zkontrolovat oprávnění / OK
- Vyberte účet
- „Google tuto aplikaci neověřil“ → vlevo dole „Rozšířená nastavení“
- „Přejít na (název projektu) (nebezpečné)“
- Zkontrolujte, co povolujete, a klikněte na „Povolit“ (pokud je co vybírat, vyberte to a klikněte na „Pokračovat“)
„Google tuto aplikaci neověřil“ je upozornění u skriptů, které Google nezkontroloval. Vaše skripty a zaznamenaná makra zkontrolované nejsou, takže tato obrazovka se zobrazí vždy. Pokud jste to vytvořili sami, můžete klidně pokračovat.
Když se ale obrazovka objeví v tabulce od někoho, koho neznáte, zvolte „Zpět do bezpečí“. Po povolení může skript pracovat s vašimi tabulkami a e-maily pod vaším účtem.
Když na začátek kódu napíšete /** @OnlyCurrentDoc */, skript smí sahat jen na „tuto tabulku“ a požadovaná oprávnění jsou užší. Zaznamenaná makra to mají od začátku.
Stejné kroky si projdete v misi 1 cvičení.
Běžný kód
Tohle se při práci s tabulkou používá nejčastěji. Čísla řádků a sloupců začínají od 1, indexy pole načteného přes getValues od 0.
| Kód | Význam |
|---|---|
| const sheet = SpreadsheetApp.getActiveSheet(); | Právě otevřený list |
| sheet.getRange('A1').getValue() | Přečíst hodnotu A1 |
| sheet.getRange('A1').setValue('Dokončeno') | Zapsat do A1 |
| sheet.getRange(2, 3) | Řádek 2, sloupec 3 (C2). Sloupce lze zadat číslem |
| sheet.getRange('A2:C10').getValues() | Přečíst oblast najednou (dvourozměrné pole) |
| sheet.getRange(2, 1, 9, 3).setValues(values) | Zapsat najednou (řádky a sloupce podle pole) |
| sheet.getLastRow() | Číslo posledního řádku s hodnotou |
| sheet.appendRow(['10/31', 'Sato', 5000]) | Přidat řádek pod poslední |
| sheet.deleteRow(5) | Smazat řádek 5 (řádky pod ním se posunou nahoru) |
| sheet.getRange('A1:D1').setFontWeight('bold') | Nastavit tučné písmo |
| sheet.getRange('A1:D1').setBackground('#fff2cc') | Nastavit barvu pozadí |
| Logger.log(value) | Zapsat do protokolu provádění (pro kontrolu hodnot) |
function judgeTargets() {
const sheet = SpreadsheetApp.getActiveSheet();
for (let row = 2; row <= sheet.getLastRow(); row++) {
const sales = sheet.getRange(row, 2).getValue();
const target = sheet.getRange(row, 3).getValue();
if (sales >= target) {
sheet.getRange(row, 4).setValue('Splněno');
} else {
sheet.getRange(row, 4).setValue('Nesplněno');
}
}
}function onOpen() {
SpreadsheetApp.getUi()
.createMenu('Měsíční uzávěrka')
.addItem('Označit velké obchody', 'markLarge')
.addToUi();
}Funkce s názvem onOpen se spustí automaticky při otevření tabulky. Když ji spustíte přes „▷ Spustit“ v editoru, objeví se chyba Cannot call SpreadsheetApp.getUi() from this context., takže uložte a tabulku otevřete znovu, abyste to ověřili.
Odesílání e-mailů a spouštění podle času
U GAS se nejčastěji hledá odesílání e-mailů a spouštěče.
function sendReminders() {
const sheet = SpreadsheetApp.getActiveSheet();
const rows = sheet.getRange(2, 1, sheet.getLastRow() - 1, 2).getValues();
rows.forEach(([name, email]) => {
MailApp.sendEmail(email, 'Připomenutí termínu', name + ',\n\ntermín odevzdání je tento pátek.');
});
}Odesílání má limit: bezplatný účet Google může poslat až 100 e-mailů denně (účty Google Workspace více). Jedno spuštění smí trvat nejvýš 6 minut; pak se zastaví s hlášením „Exceeded maximum execution time“.
Pro spouštění podle času klikněte vlevo v editoru na „Spouštěče“ (ikona hodin) → „Přidat spouštěč“ a vyberte funkci a „Podle času“. Můžete nastavit čas každý den, týden nebo měsíc.
E-maily se odesílají doopravdy, i když jen zkoušíte. Nejdřív testujte na tabulce, kde je jen vaše vlastní adresa.
Rozdíly oproti VBA v Excelu
| GAS | VBA v Excelu | |
|---|---|---|
| Kód | JavaScript | VBA(Visual Basic) |
| Kde běží | Servery Googlu | Excel na vašem počítači |
| Co potřebujete | Prohlížeč a účet Google | Desktopová verze Excelu (hlavně ve Windows) |
| Propojuje se s | Gmail, Kalendář, Disk, Formuláře | Word, Outlook, soubory v počítači |
| Spouštění podle času | Pomocí spouštěčů (běží i při vypnutém počítači) | V kombinaci s Plánovačem úloh ve Windows apod. |
Myšlenky jsou v obou stejné: číst buňky, zapisovat, opakovat a rozlišovat podle podmínek. Kdo umí jedno, přečte i druhé. Makra v Excelu popisujeme v úvodu do maker v Excelu.
Procvičujte v prohlížeči
V simulaci maker a GAS na tomto webu procvičujete spouštěním skutečného kódu ve virtuální tabulce a editoru Apps Script. Doplňujete mezery v kódu a na telefonu vybíráte každou mezeru ze čtyř možností.
- Kapitola 1 Záznam a spouštění maker
Spusťte zaznamenané makro a nahrajte vlastní. Absolutní a relativní odkazy, čtení a úpravy zaznamenaného kódu.
- Kapitola 2 Číst, opakovat, rozlišovat
Čtěte buňky přes getValue, zapisujte přes setValue a kontrolujte hodnoty v protokolu provádění. Procházejte všechny řádky pomocí for a rozlišujte pomocí if.
- Kapitola 3 Případová studie: úprava měsíční tabulky prodejů
Smažte prázdné řádky, označte najednou velké obchody a spusťte to z vlastní nabídky. Nakonec vlastní funkce pro buňky.
Jak se naučit GAS
Dobrý začátek je „Zaznamenat makro“ v některé vlastní tabulce a přečíst vzniklý kód. Lépe pak uvidíte, co který příkaz dělá.
Kód umí napsat i generativní AI. Abyste ale posoudili, zda je správně a co upravit, musíte umět přečíst aspoň „běžný kód“ z tohoto článku.
* Názvy obrazovek a limity jsou platné k říjnu 2026 a mohou se změnit s úpravami Googlu.
* Tabulky Google jsou ochranná známka společnosti Google LLC. Tento web není s Googlem nijak spojen.