Google Spreadsheet: Automatické odesílání emailu z formuláře a tabulky

V tomto článku se podíváme na to, jak vytvořit funkci pro automatické odesílání emailu z tabulky nebo formuláře vytvořeného v Google Spreadsheet.

Google Spreadsheet, najdete jako online aplikaci v rámci Google Docs. Zastává v online dokumentech od Googlu funkce stojící na pomezí tabulkového editoru – tedy je jakousi online variantou Excelu od Microsoftu – a zároveň nástrojem pro tvorbu online formulářů a dotazníků. Více o tom, jak si v něm vytvořit vlastní formulář najdete v tomto článku s návodem, jak si udělat dotazník. V tomto návodu se podíváme na to, jak zařídit, aby se na email vložený do tabulky (respektive vložený do tabulky pomocí formuláře) posílala automaticky zpráva.

Vytváříme skript

Málokdo ví, že podobně jako má Excel svá makra, má také Spreadsheet svoje skripty. Pokud vás tato tematika zajímá hlouběji, můžeme doporučit ke studiu stránky věnované Google Apps Skriptu. Pro naše účely úplně stačí vědět to, že z menu Google Tabulek se do k nim dostanete přes volbu Nástroje > Editor skriptů. Pak tam vložte následující kód:
function sendEmails() {
var sheet = SpreadsheetApp.getActiveSheet();
var startRow = 2;
var numRows = 2;
// Fetch the range of cells A2:B3
var dataRange = sheet.getRange(startRow, 1, numRows, 2)
var data = dataRange.getValues();
for (i in data) {
var row = data[i];
var emailAddress = row[2]; // Sloupec row[0] = Sloupec A, sloupec B = row[1] atd.
var message = "Ahoj,\n\n"
+"díky za tvůj vzkaz ve znění "+row[2];
var subject = "Díky za zprávu";
MailApp.sendEmail(emailAddress, subject, message);
}
}

Co znamená která hodnota v tomto kódu?

  • startRow – udává číslo řádku, od kterého se má začít tabulka začít zpracovávat
  • numRows – udává číslo sloupce, od kterého se má začít tabulka zpracovávat
  • dataRange = sheet.getRange(startRow, 1, numRows, 2) – používá tyto čísla k určení rozsahu, který se má načíst ke zpracování
  • data = dataRange.getValues() pak tento rozsah zpracovává pro další potřebu
  • for (i in data) {} je pak klasický for cyklus, známý všem programátorům
  • row = data[i] nám jednoduše řečeno, pomůže s nastavováním níže
  • emailAddress = row[] – zde zadejte číslo sloupce, ve kterém je emailová adresa – pozor: čísluje se od 0 a pokud používáte ke vkládání hodnot formulář, mějte na paměti, že Google Spreadsheet vždy do tabulky v tom případě přidá ještě jeden sloupec, nazvaný Časová značka
  • message do uvozovek zde napište vzkaz, který chcete automaticky odesílat
  • subject – zde se zadává opět do uvozovek text předmětu emailu, který bude odeslán

Automatické odesílání při vyplnění formuláře

Protože samotný skript se nespustí, pokud nemá spouštěč (trigger), je mu ho potřeba přidat. To uděláme takto:

  1. v editoru skriptu jděte do menu Spouštěče > Všechny spouštěče
  2. Přidejte nový volbou Add a new trigger (přidat nový spouštěč)
  3. Zde vyplňte tuto posloupnost:
    sendEmails > From Spreadsheet > On form submit
  4. hotovo!

Emaily se budou posílat v této chvíli automaticky, jako odesilatel bude uveden email, pod kterým jste se přihlásili do Google Docs.

Komentáře k článku. Přidejte i váš!

  1. Děkuji Vám za článek, určitě pomohl… 😉

  2. Da sa tato funkcia vyuzit aj na vlozenie adWords track code? Aby mi to meralo statistiku navstev “thankyoupage”. Cize kolko ludi vyplnilo formular a kliklo na “Odoslat”.
    Dakujem.

  3. jedině že by se tam dalo místo “Váš formulář byl odeslán” dalo: pokračujte kliknutím sem: a odkaz na nějakou stránku s tím trackovacím kódem

  4. Dakujem za rychlu odpoved.
    Vas napad by sice fungoval, ale nezarucuje, ze vsetci zakaznici na to kliknu, ak tomu dobre rozumiem.
    Cize cez Google Spreadsheet skripty sa to neda? Nevyznam sa v skriptovani ani v programovani, ale aspon laicky, ak mozem poprosit, v com je hlavny dovod, ze tie skripty sa na to vyuzit nedaju? Dakujem.

  5. Zdravím, děkuji za návod. Mám jen malý problém, když udělám vše podle návodu výše tak to funguje, ale jen na první zápis. Jakmile zadám další odpovědi e-mail se odešle, ale jen na tu první zadanou e-mailovou adresu. Můžete mi prosím poradit jak upravit ten skript tak, aby se odeslal vždy na e-mailovou adresu aktuálně vloženého příspěvku? Děkuji 😉

  6. A teď asi jinak…Mám seznam adres v google spreadsheet, pravidelně chci odeslat formulář, kde si všichni zapíší docházku a seznam e-mailových adres mám v listu “Kontakty”. Jde pořešit pravidelné odeslání e-mailu? Díky!

  7. dobrý den,

    mám stejný problém jako BOBO:

    Zdravím, děkuji za návod. Mám jen malý problém, když udělám vše podle návodu výše tak to funguje, ale jen na první zápis. Jakmile zadám další odpovědi e-mail se odešle, ale jen na tu první zadanou e-mailovou adresu. Můžete mi prosím poradit jak upravit ten skript tak, aby se odeslal vždy na e-mailovou adresu aktuálně vloženého příspěvku? Děkuji 😉

  8. Kde jsou k videni odpovedi na diskutované otázky? Zajímá mi například odpověď na dotaz haRda 😉

Napsat komentář

Vaše emailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *