Google Forms a Google Apps Script – registrace na událost a odeslání registračního e-mailu

Pokud organizujete událost, na kterou se musí uživatelé registrovat a vy jim po provedené registraci zasíláte informační e-mail s údaji, které Vám vyplnili do registračního formuláře či informace pro platbu startovného, můžete k tomu využít Google Forms (Google Formuláře), které Vám tuto práci zautomatizují.

V případě, že zasíláte informační e-mail, který obsahuje pouze údaje, které Vám vyplnil uživatel při registraci a údaje stejné pro všechny účastníky, tak Vám k tomuto bude stačit pouze vytvořený registrační formulář v Google Forms (Google Formulářích) s dodatečně doinstalovaným bezplatným či placeným doplňkem. Tomuto řešení se ale tady nebudeme věnovat, neboť použijeme Google Apps Script. Toto řešení má výhodu v tom, že se dá dále rozšířit pro složitější operace, než které Vám umožní použití doplňků.

V prvním článku k tomuto tématu bude popsán jen jednoduchý základ, složitější operace jako je třeba volba jazykové mutace odeslaného e-mailu, skládání jména účastníka včetně jeho hodnosti a titulů či rozesílání registračních čísel pro účastníky a jejich správa, budou popsány později.

Budu se snažit to popsat dost názorně, aby i člověk, který moc programování nerozumí, to jednoduše pochopil. Sám jsem Google Apps Scriptem nepolíben, všechno jsem poskládal z různých návodů na internetu (články, fóra, …), přičemž přidělování registračních čísel a jejich správa mě napadla náhodou. Nenašel jsem k tomuto před cca 3 lety žádný použitelný vzor, tak je možné, že člověk znalý kódu Google Appps Scriptu si bude ťukat na čelo. Tímto se chci částečně ospravedlnit za čistotu kódu, která by mohla být jistě na vyšší úrovni.

Odeslání e-mailů pomocí scriptů je u free Google účtu omezeno na 100 e-mailů denně.

K použití Google Forms musíte mít Google účet (účet zdarma či placený G-Suite). Otevřeme si Google Drive, kde přes tlačítko Přidat >> Více >> Formuláře Google vytvoříme registrační formulář.

Pro zkušební účely vytvoříme registrační formulář, který bude obsahovat pouze 3 jednoduché otázky. První bude otázka na jméno, druhá na příjmení a třetí otázka bude na e-mail, na který budeme zasílat odpověď. U obou voleb zvolíme jako typ odpovědi „Stručná odpověď“, u e-mailu můžeme ještě navolit Ověření odpovědi, jak je vidět na obrázku níže. Tato volba je dostupná přes skrytou nabídku (3 tečky nad sebou) v pravém dolním rohu u každé otázky. Všechny odpovědi navolíme jako povinné, což znamená, že bez jejich vyplnění nepůjde registrační formulář odeslat.
Volbu „Zapnout nastavení pro sbírání e-mailů“ necháme vypnutou.

V horní části formuláře se přepneme ze záložky Otázky na záložku Odpovědi, kde vybereme přes zelenou ikonu Vytvoření tabulky.

V nově otevřeném okně vše potvrdíme tlačítkem Vytvořit.

Tímto se nám registrační formulář propojí s Tabulkou Google, kde v prvním sloupci je vždy Časová značka (název záleží na jazykové mutaci) a v dalších sloupcích jsou odpovědi na otázky z registračního formuláře, v našem konkrétním případě to je Jméno, Příjmení a E-mail. Názvy sloupců odpovídají otázkám v registračním formuláři.

Přes nabídku Nástroje >> Editor scriptu spustíme editor pro Google Apps Script.

Funkci myFunction nahradíme následující funkcí:

function odeslaniRegistracnihoEmailu(e) {
// do promennych casovaZnacka, jmeno, prijmeni a emailUcastnika budeme ukladat hodnoty z Tabulky Google
var casovaZnacka = e.values[0]; // cisla sloupcu se tady pocitaji od 0, misto e.values[0] lze použít e.namedValues["Časová značka"]
var jmeno = e.namedValues["Jméno"];
var prijmeni = e.namedValues["Příjmení"];
var emailUcastnika = e.values[3]; // místo e.values[3] se dá použít e.namedValues["E-mail"]

var aktualniList = SpreadsheetApp.getActiveSheet(); //do promenne aktualniList ulozime aktivni list, tzn. ten list, kam se ukladaji vysledky z reg. formulare
var aktualniRadek = aktualniList.getActiveSelection().getRowIndex(); //do promenne aktualniRadek ulozime radek s hodnotami od aktualne registrovaneho uzivatele
var predmetEmailu = "Testovací registrační e-mail"; // promenna pro hodnotu predmetu e-mailu

var celeJmeno = jmeno + " " + prijmeni; // do promenne celeJmeno ulozime hodnotu z promenne jmeno a prijmeni vcetne mezery

var teloEmailuHtml =
"Vážený pane/paní " + prijmeni + ",<br/>" +
"<br/>" +
"děkujeme Vám za registraci přes náš testovací registrační formulář, která byla provedena " + casovaZnacka + ".<br/>" +
"<br/>" +
"Údaje, které jste vložil(a) do našeho registračního formuláře, jsou následující:<br/>" +
"Vaše celé jméno: <b>" + celeJmeno + "</b><br/>" +
"E-mail: <b>" + emailUcastnika + "</b><br/>" +
"<br/>" +
"S pozdravem<br/>" +
"<br/>" +
"Organizační tým<br/>" +
"<br/>" +
"<i>Vytvořeno dle návodu zveřejněného na webu https://www.aldacerny.cz.</i>";
// <b> a </b> jsou parove html znacky pro tucne pismo
// <i> a </i> jsou parove html znacky pro kurzivu
// <br/> je nepárová html značka pro nový řádek

MailApp.sendEmail(emailUcastnika, predmetEmailu, "", {'htmlBody':teloEmailuHtml}); //odesle e-mail na e-mailovou adresu ucastnika
}

Pro správnou funkčnost zde uvedeného scriptu zakažte nový modul Chrome V8, který bývá od začátku roku 2020 již aktivován jako výchozí.
Spustit >> Zakázat nové běhový modul Apps Script založený na Chrome V8.

Výsledek bude vypadat jako na obrázku dole, po úpravě nesmíme zapomenout uložit změny, použijeme k tomu ikonu diskety dostupnou v horní liště. Pro přehlednost jsem si ještě přejmenoval tento projekt na Projekt Registrace přes aldacerny.cz.

Pro spouštění naší nově vytvořené funkce musíme ještě zvolit spouštěč, lze to provést opět přes ikonu dostupnou v horní liště.

Tímto se nám otevře nová karta v prohlížeči, ve které se nám přes tlačítko Přidat spouštěč zpřístupní níže uvedené okno, ve kterém navolíme uvedené hodnoty. Funkce ke spuštění odpovídá názvu naší funkce, je předvolená a nedá se změnit stejně jako implementace ke spuštění. Zdroj události je přednastavený na volbu Z tabulky, tuto možnost ponecháme, typ události přenastavíme na Při odesílání formuláře. Nastavení oznámení o chybě přepněte na Dostávat oznámení ihned, ať se o možných problémech dozvíte co nejdříve. Tyto změny nesmíte zapomenout uložit přes tlačítko Uložit.

V nově otevřeném okně potvrdíme e-mailový účet, který budeme používat k odesílání registračních e-mailů.

Zobrazí se informace o tom, že tato aplikace není ověřená. Přes kliknutí na Rozšířené možnosti si zpřístupníme další nabídku.

Zde klikneme na Přejít na web Projekt Registrace přes aldacerny.cz (nebezpečné), Projekt Registrace přes aldacerny.cz odpovídá názvu našeho projektu, pokud jste si jej pojmenovali jinak, tak zde bude samozřejmě jiné jméno.

V nově otevřeném okně umožníme aplikaci přístup ke Google účtu, to provedeme přes tlačítko Povolit.

Vše ještě jednou potvrdíme přes tlačítko Uložit. Následně by jsme měli vidět stejnou obrazovku jako je na obrázku dole.

Přepneme se do okna, kde jsme vytvářeli registrační formulář a přes ikonu Náhledu si zpřístupníme stránku s registračním formulářem, kde budeme moci vyplnit požadované údaje.

Obsah stránky bude vypadat jak je vidět níže, webovou adresu této stránky následně zpřístupníme uživatelům, kterým chceme umožnit registraci.

Po odeslání registračního formuláře nám přijde na e-mail odpověď, která je vidět dole. Současně by jsme měli tento e-mail najít i v Odeslané poště u Google účtu, který jsme svázali s našim registračním formulářem.

Jak je snad dostatečně z tohoto příkladu patrné, tak není problém se stávajícími znalostmi zaslat registrovaným uživatelům e-mail, který bude obsahovat údaje vyplněné uživatelem či jakékoliv údaje společné pro všechny registrované.

1 komentář u „Google Forms a Google Apps Script – registrace na událost a odeslání registračního e-mailu“

Napsat komentář