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.

Záznam: napsat „test“ do B2 a dát tučně
/** @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

  1. Otevřete tabulku a zvolte „Rozšíření“ → „Apps Script“
  2. Editor se otevře na nové kartě: vlevo „Kód.gs“, vpravo function myFunction() { }
  3. Napište kód do { } a uložte (Ctrl+S, na Macu ⌘+S)
  4. Klikněte nahoře na „▷ Spustit“. Výsledek se zobrazí dole v „Protokolu provádění“
První skript: přečíst A1, zapsat do protokolu a napsat do B1
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.

  1. „Je vyžadována autorizace“ → Zkontrolovat oprávnění / OK
  2. Vyberte účet
  3. „Google tuto aplikaci neověřil“ → vlevo dole „Rozšířená nastavení“
  4. „Přejít na (název projektu) (nebezpečné)“
  5. 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ódVý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)
Projít všechny řádky a rozlišit podle podmínky
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');
    }
  }
}
Přidat vlastní nabídku při otevření (onOpen)
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.

Poslat e-mail na adresy z tabulky
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

GASVBA v Excelu
KódJavaScriptVBA(Visual Basic)
Kde běžíServery GoogluExcel na vašem počítači
Co potřebujeteProhlížeč a účet GoogleDesktopová verze Excelu (hlavně ve Windows)
Propojuje se sGmail, Kalendář, Disk, FormulářeWord, Outlook, soubory v počítači
Spouštění podle časuPomocí 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í.

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

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

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

Začít simulaci (13 misí) →

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.