Blog

Jak si napsat skript, který zapíše poptávku z mailu do tabulky?

Jedno odpoledne a asi třicet řádků kódu. Skript se každých pár minut podívá do schránky a připíše nové poptávky do tabulky.

Obsah článku

Zabere to jedno odpoledne a nestojí to nic. Potřebujete účet Google, tabulku,
štítek v Gmailu a asi třicet řádků kódu, které máte níž celé. Skript se sám
každých pár minut podívá do schránky, najde nové poptávky a připíše je do
tabulky jako řádky.

Jedna věc se hodí vědět dřív, než začnete, protože překvapí skoro každého.
Apps Script nemá spouštěč „přišel nový e-mail". V oficiálním seznamu
spouštěčů jsou jen otevření dokumentu, úprava buňky, změna tabulky, odeslání
formuláře, změna v kalendáři a časovač
(Google for Developers, cit. 31. 8. 2026).
Takže se schránka nedá odchytit, dá se jen pravidelně prohledávat. Celý návod
z toho vychází.

Kolik to stojí a co k tomu potřebujete

Nic. Stránka produktu Google na otázku, jestli je potřeba platit, odpovídá
„Ne. Potřebujete pouze účet Gmail."
(Google Workspace, cit. 31. 8. 2026).
Placené předplatné Workspace není podmínka, mění jen velikost stropů,
o kterých je řeč na konci.

Připravte si tři věci:

  1. Účet Google, ve kterém ta pošta je, nebo do kterého ji budete přeposílat.
  2. Tabulku v Google Sheets s listem, kam se to bude psát.
  3. Přeposílání z formuláře, pokud poptávky nechodí rovnou do téhle schránky.

U přeposílání pozor na dvě věci z oficiální nápovědy. Cílová adresa musí
přeposílání potvrdit, Gmail na ni pošle ověřovací zprávu a příjemce musí
„kliknout na ověřovací odkaz ve zprávě". A ve výchozím stavu se přeposílá
všechna pošta, ne jen poptávky. Nápověda k tomu píše: „Chcete-li přeposílat
jen vybrané zprávy, vypněte automatické přeposílání a nastavte filtr."
(Nápověda Gmailu, cit. 31. 8. 2026)

Krok 1: označte si poptávky štítkem

V Gmailu si vytvořte štítek, třeba poptavka, a udělejte filtr, který ho
přiřadí každé zprávě z vašeho formuláře. Filtr obvykle poznáte podle odesílatele
nebo podle předmětu.

Udělejte si rovnou i druhý štítek, zapsano. Ten bude skript používat jako
značku „tuhle už jsem přepsal".

Jak poznáte, že je hotovo: pošlete si přes svůj formulář zkušební poptávku
a do minuty ji vidíte v Gmailu se štítkem poptavka. Když tam štítek není,
filtr chytá něco jiného, než si myslíte.

Krok 2: připravte tabulku

Založte tabulku, list pojmenujte třeba Poptávky a do prvního řádku dejte
záhlaví: datum, od koho, předmět, text.

Z adresy tabulky si opište její identifikátor, je to ten dlouhý kus mezi
/d/ a /edit.

Jak poznáte, že je hotovo: identifikátor máte v poznámkách a list se jmenuje
přesně tak, jak ho pak napíšete do kódu, včetně diakritiky.

Krok 3: napište skript

Otevřete tabulku, v menu jděte na Rozšíření a Apps Script. Otevře se editor.
Smažte, co v něm je, a vložte tohle:

// Spouští se časovačem, například každých 5 minut.
function zapisNovePoptavky() {
  var LIST = SpreadsheetApp.openById('ID_TABULKY').getSheetByName('Poptávky');

  var hotovo = GmailApp.getUserLabelByName('zapsano')
            || GmailApp.createLabel('zapsano');

  // Hledá jen to, co má štítek poptavka a ještě není zapsané.
  var vlakna = GmailApp.search('label:poptavka -label:zapsano', 0, 20);

  vlakna.forEach(function (vlakno) {
    vlakno.getMessages().forEach(function (zprava) {
      LIST.appendRow([
        zprava.getDate(),
        zprava.getFrom(),
        zprava.getSubject(),
        zprava.getPlainBody()
      ]);
    });
    vlakno.addLabel(hotovo);   // bez tohohle se řádky opakují
  });
}

Za ID_TABULKY doplňte identifikátor z kroku 2.

Co ten kód dělá, stojí na dvou metodách z oficiální dokumentace.
GmailApp.search(query) „prohledá Gmail zadaným dotazem" a vrátí vlákna,
Sheet.appendRow(rowContents) „připojí řádek na konec současné datové oblasti
v listu"
(reference GmailApp, cit. 31. 8. 2026
a reference Sheet, cit. 31. 8. 2026).

Jak poznáte, že je hotovo: v editoru dáte Spustit. Google se poprvé zeptá na
oprávnění ke Gmailu a k tabulce, potvrdíte je. Pak se v tabulce objeví řádek
s vaší zkušební poptávkou a v Gmailu má ta zpráva navíc štítek zapsano.

Krok 4: nastavte časovač

V editoru vlevo je ikona budíku, Spouštěče. Přidejte nový, funkce
zapisNovePoptavky, typ podle času, interval po minutách.

Na výběr máte jen některé hodnoty. Dokumentace k tomu píše, že everyMinutes(n)
přijímá „1, 5, 10, 15 nebo 30"
(ClockTriggerBuilder, cit. 31. 8. 2026).
Pro poptávky bohatě stačí pět minut.

Jak poznáte, že je hotovo: pošlete si druhou zkušební poptávku, nesahejte na
nic a do pěti minut se objeví v tabulce sama. Tohle je ten okamžik, kdy to
opravdu běží.

Kde to drhne

Bez značky se řádky opakují. Skript nedostane událost „přišel mail", jen
výsledek hledání
(Google for Developers, cit. 31. 8. 2026).
Když zapomenete řádek vlakno.addLabel(hotovo), každý běh zapíše stejné
poptávky znovu. Za den jich máte v tabulce dvě stě osmdesát osm.

Text mailu se musí rozebrat. Kód nahoře zapíše celé tělo zprávy do jedné
buňky. Jestli chcete zvlášť jméno, telefon a poptávku, musíte si ten text
rozřezat sami. A tady je ta zrada: až se změní formát mailu z formuláře,
rozebírání přestane fungovat a nikdo vám to neřekne.
Poznáte to podle
prázdných buněk, obvykle o pár dní později.

Diakritika v názvu listu. getSheetByName('Poptávky') musí sedět přesně.
Když to nesedí, skript spadne na tom, že list neexistuje.

Chyba nikam nezavolá. Když skript selže, Google vám pošle mail o chybě, ale
tabulka zůstane prázdná. Chodí to do té samé schránky, kde už máte plno.

Co si budete udržovat

Buďte na to připravení, protože to není nula.

  • Kód. Je váš. Kdo mu rozumí, ten ho opraví.
  • Filtr v Gmailu. Nový formulář nebo jiný odesílatel a filtr přestane chytat.
  • Rozebírání textu. Nejčastější porucha, viz výš.
  • Oprávnění. Skript má přístup k celé vaší schránce, ne jen k poptávkám.
    To je dobré vědět, než k účtu pustíte někoho dalšího.

Na co si dát pozor s limity

Kvóty jsou vázané na účet, ne na skript. Podle oficiální tabulky má běžný účet
Gmail 90 minut celkového času spouštěčů denně a Google Workspace 6 hodin.
Jeden běh smí trvat nejvýš 6 minut. Čtení a zápis e-mailu má strop
20 000 denně u běžného účtu a 50 000 u Workspace. Odeslané zprávy 100 denně,
respektive 1 500.
(Quotas for Google Services, cit. 31. 8. 2026)

Co z toho plyne prakticky, je odhad spočítaný z čísel v téže
tabulce kvót,
ne měření: při běhu každých pět minut má skript 288 spuštění denně a na každé
zhruba osmnáct sekund. Na zápis poptávek to stačí s velkou rezervou. Při běhu
každou minutu je to už necelé čtyři sekundy na spuštění a v plné schránce se to
začne krátit.

Strop na odeslané zprávy je důležitý, jestli byste chtěli skriptem posílat
i potvrzení zákazníkovi. Sto adresátů denně z běžného účtu Gmail je hranice,
kterou se nedá koupit, jen přejít na placený Workspace.

Když máte poštu na Seznamu

Apps Script na to sám nestačí. Umí jen služby pro schránku Google, žádnou pro
cizí IMAP. Cesta je jediná: nastavit si na Seznamu přeposílání do Gmailu a číst
poštu až tam. Skript pak běží úplně stejně, jak je popsaný výš.

Pro koho to je a pro koho ne

Ano, jestli vám kód nevadí, chcete to mít zadarmo a nevadí vám, že údržba je
na vás. Je to poctivé řešení, které u spousty firem běží roky.

Ano, jestli ta schránka je vaše osobní a nikdo jiný do ní nesahá.

Ne, jestli ve firmě nikdo kódu nerozumí. Skript, kterému nerozumí nikdo, je
horší než žádný, protože se na něj spoléháte a on tiše přestane.

Ne, jestli potřebujete, aby zákazník dostal potvrzení. To už je druhý kus
práce a strop sto zpráv denně vám do toho promluví.

Ne, jestli poptávky chodí na Seznam a přeposílat je do Gmailu nechcete.

Co s tím teď

Jestli si chcete tuhle cestu porovnat s hotovými službami a s tím, jak to vypadá,
když si to nechá firma udělat, máme o tom
samostatné srovnání.

A jestli chcete nejdřív vidět, jak to celé vypadá hotové, zkuste si
ukázku: odešlete formulář a projdete si cestu
od odeslání až po potvrzení zákazníkovi. Když to chcete rovnou u sebe,
napište nám.

Související