Google Forms email automation Google Apps Script-iga
Sellel lehel leiad samm-sammulise juhendi, kuidas seadistada Google Formsi emaili-automaatikat Google Apps Scripti abil.
Iga screenshot illustreerib konkreetset sammu protsessis – alates küsimuste harudest ja andmete salvestamisest Google Sheetsi, kuni automaatsete e-kirjade saatmiseni skripti kaudu.
See juhend sobib nii algajatele kui ka neile, kes otsivad lihtsat lahendust ilma lisapluginate või keeruka koodita.
1. Google Form
Kõik esimesel lehel on täitmiseks kohustuslik.

Google Form võttab kaks erinevad teed:


Kui osalejal on koduloom

Vorm võttab kaks erinevad teed:










Tuleb vastus

Kui osalejal ei ole koduloomi

Kui selle lehe ainus kohustuslik vastus alustab sõnaga “Jah”, siis on veel üks küsimus



Tuleb vastus

2. Google Table salvestab sisestatud andmed

3. Google Apps Script
3.1. Skripti ülesanne
See skript saadab automaatselt kinnituskirja Google Forms’i vastajale, kasutades tema vastuseid isikupärastatud kirja loomiseks.
3.2. Koodi lahtiseletamine
Algus ja andmete laadimine
function sendEmailToClient() { var ss = SpreadsheetApp.getActiveSpreadsheet(); var listAnswers = ss.getSheetByName("Koduloomade_uuring(vastused)");
Mida see teeb?
SpreadsheetApp.getActiveSpreadsheet()
– valib aktiivse Google Sheetsi dokumendi.getSheetByName()
– leiab töölehe nime järgi (antud juhul “Koduloomade_uuring(vastused)”).
Vastaja andmete lugemine
var osalejaNimi = listAnswers.getRange(listAnswers.getLastRow(), 2).getValue(); // Nimi var osalejaEmail = listAnswers.getRange(listAnswers.getLastRow(), 4).getValue(); // Email var osalejaVanus = listAnswers.getRange(listAnswers.getLastRow(), 3).getValue(); // Vanus
Tähtsad osad:
getLastRow()
– leiab viimase täidetud rea.getRange(rida, veerg)
– valib konkreetse lahtri (nt veerg 2 = nimi).
Koduloomade küsimuste analüüs
var valikLoom = listAnswers.getRange(listAnswers.getLastRow(), 5).getValue(); // Kas on koduloom? var valikLoomNumber = listAnswers.getRange(listAnswers.getLastRow(), 6).getValue(); // Mitu?
Miks see vajalik on?
Selle abil määratakse, millist kirja mall kasutada (üks loom vs mitu looma).
E-kirja koostamine
if (valikLoom == '✅ Jah 🐾 – Mul on koduloom(ad).' && valikLoomNumber == 'Üks') { body = bodyvalik1; // Ühe looma omanikule } else if (valikLoom == '✅ Jah 🐾 – Mul on koduloom(ad).' && valikLoomNumber == 'Mitu') { body = bodyvalik2; // Mitme looma omanikule }
Kuidas see töötab?
- Kontrollib, kas kasutajal on üks või mitu koduloom.
- Valib vastava HTML-kirja malli (
bodyvalik1
võibodyvalik2
).
Kirja saatmine
MailApp.sendEmail(osalejaEmail, "Saime Teie vastus kätte", '', { htmlBody: body });
Parameetrid:
osalejaEmail
– kellele saata.htmlBody
– kasutab HTML-vormingut kirja kujundamiseks.
3.3. Levinud probleemid ja lahendused
❓ Miks kirjad ei saabu?
✅ Kontrolli:
- Kas
osalejaEmail
on õige. - Kas Gmaili päevane limiit (100 kirja) on täis.
- Kas skriptil on õigused kirjade saatmiseks.
❓ Kuidas lisada faili manus?
✅ Lisa see koodi:
var fail = DriveApp.getFileById("faili-ID"); MailApp.sendEmail(email, "Teema", "", { attachments: [fail] });
Kogu kood
/**
* @OnlyCurrentDoc - Piirdub tööga ainult praeguse dokumendiga
*
* See skript saadab küsitlusele vastanud isikule kinnituse e-kirja
* koos nende poolt esitatud vastustega.
*/
function sendEmailToClient() {
// Laeb aktiivse arvutustabeli ja vastuste lehe
var ss = SpreadsheetApp.getActiveSpreadsheet();
var listAnswers = ss.getSheetByName("Koduloomade_uuring(vastused)");
// Loeb viimase rea andmed (uusim vastus)
var osalejaNimi = listAnswers.getRange(listAnswers.getLastRow(),2).getValue();
var osalejaEmail = listAnswers.getRange(listAnswers.getLastRow(),4).getValue();
var osalejaVanus = listAnswers.getRange(listAnswers.getLastRow(),3).getValue();
// Loeb põhiküsimuste vastused
var valikLoom = listAnswers.getRange(listAnswers.getLastRow(), 5).getValue();
var valikLoomNumber = listAnswers.getRange(listAnswers.getLastRow(), 6).getValue();
// Loeb ühe kodulooma omaniku vastused
var osalejaLoomad = listAnswers.getRange(listAnswers.getLastRow(), 7).getValue();
var osalejaLoomaEelistus = listAnswers.getRange(listAnswers.getLastRow(), 8).getValue();
var loomaValikPohjus = listAnswers.getRange(listAnswers.getLastRow(), 9).getValue();
var loomaSattusViis = listAnswers.getRange(listAnswers.getLastRow(), 10).getValue();
// Loeb mitme kodulooma omaniku vastused
var osalejaLoomadMitu = listAnswers.getRange(listAnswers.getLastRow(), 11).getValue();
var osalejaLoomaEelistusMitu = listAnswers.getRange(listAnswers.getLastRow(), 12).getValue();
var loomaValikPohjusMitu = listAnswers.getRange(listAnswers.getLastRow(), 13).getValue();
var loomaSattusViisMitu = listAnswers.getRange(listAnswers.getLastRow(), 14).getValue();
// Loeb koduloomata isiku vastused
var osalejaPohus = listAnswers.getRange(listAnswers.getLastRow(), 15).getValue();
var minevikKoduloom = listAnswers.getRange(listAnswers.getLastRow(), 16).getValue();
var loomaSattusViisTulevik = listAnswers.getRange(listAnswers.getLastRow(), 17).getValue();
var loomaVotteSoov = listAnswers.getRange(listAnswers.getLastRow(), 18).getValue();
var loomaValik = listAnswers.getRange(listAnswers.getLastRow(), 19).getValue();
// Muutujad e-kirja sisu jaoks
var koduLoomMinevikus;
var loomaEelistus;
var loomaEelistusMitu;
var loomSattusMitu = processCheckboxAnswers(loomaSattusViisMitu);
var loomSattus;
var loomaSattuseValik;
var body;
// Määrab osaleja lemmiklooma eelistuse (üks loom)
if (osalejaLoomaEelistus == '🐱 Kassiinimene') {
loomaEelistus = 'Olete'+ osalejaLoomaEelistus;
} else if (osalejaLoomaEelistus == '🐶 Koerainimene') {
loomaEelistus = 'Olete'+ osalejaLoomaEelistus;
} else if (osalejaLoomaEelistus == '🐾 Armastan kõiki loomi') {
loomaEelistus = '🐾 Armastate kõiki loomi';
} else if (osalejaLoomaEelistus == 'Mulle üldse ei meeldi loomad') {
loomaEelistus = 'Teile üldse ei meeldi loomad';
} else if (osalejaLoomaEelistus == '') {
loomaEelistus = 'Te ei vastanud küsimustele';
} else {
loomaEelistus = 'Valisite muu vastus:' + osalejaLoomaEelistus;
}
// Määrab osaleja lemmiklooma eelistuse (mitu looma)
if (osalejaLoomaEelistusMitu == '🐱 Kassiinimene') {
loomaEelistusMitu = 'Olete'+ osalejaLoomaEelistusMitu;
} else if (osalejaLoomaEelistusMitu == '🐶 Koerainimene') {
loomaEelistusMitu = 'Olete'+ osalejaLoomaEelistusMitu;
} else if (osalejaLoomaEelistusMitu == '🐾 Armastan kõiki loomi') {
loomaEelistusMitu = '🐾 Armastate kõiki loomi';
} else if (osalejaLoomaEelistusMitu == 'Mulle üldse ei meeldi loomad') {
loomaEelistusMitu = 'Teile üldse ei meeldi loomad';
} else if (osalejaLoomaEelistusMitu == '') {
loomaEelistusMitu = 'Te ei vastanud küsimustele';
} else {
loomaEelistus = 'Valisite muu vastus:' + osalejaLoomaEelistus;
}
// Määrab, kuidas loom omanikuni jõudis (üks loom)
if (loomaSattusViis == '🛍 Ostsin') {
loomSattus = 'Teie ostsite oma looma.';
} else if (loomaSattusViis == '🏡 Võtsin varjupaigast') {
loomSattus = 'Teie võtsite oma looma varjupaigast';
} else if (loomaSattusViis == '🏞 Leidsin tänavalt') {
loomSattus = 'Teie leidsite oma looma tänavalt';
} else if (loomaSattusViis == '🎁 Sõbrad/tuttavad andsid ära') {
loomSattus = 'sõbrad/tuttavad andsid Teile looma ära';
} else if (loomaSattusViis == '') {
loomSattus = 'Te ei vastanud küsimustele';
} else {
loomSattus = 'Valisite muu vastus:' + loomaSattusViis;
}
// Määrab tuleviku loomavaliku viisi (koduloomata isikud)
if (loomaSattusViisTulevik == '🛍 Ostan') {
loomaSattuseValik = 'Teie ostate oma looma.';
} else if (loomaSattusViisTulevik == '🏡 Võtan varjupaigast') {
loomaSattuseValik = 'Teie võtate oma looma varjupaigast';
} else if (loomaSattusViisTulevik == '🎁Võtan käest') {
loomaSattuseValik = 'Teie võtate oma looma käest';
} else if (loomaSattusViisTulevik == '') {
loomaSattuseValik = 'Te ei vastanud küsimustele';
} else {
loomaSattuseValik = 'Valisite muu vastus:' + loomaSattusViis;
}
// Määrab, kas osalejal on olnud varem koduloomi
if(minevikKoduloom == '✅ Jah'){
koduLoomMinevikus = 'Minevikus Teil oli koduloom.'
}else{
koduLoomMinevikus = 'Minevikus Teil ei olnud koduloomi.'
}
// E-kirja mallid erinevatele vastusevariantidele
var bodyvalik1 = /*...*/; // Ühe kodulooma omanikule
var bodyvalik2 = /*...*/; // Mitme kodulooma omanikule
var bodyvalik3 = /*...*/; // Koduloomata isikule (soovib tulevikus)
var bodyvalik4 = /*...*/; // Koduloomata isikule (ei soovi)
var bodyvalimata = /*...*/; // Vigane vastus
// Valib sobiva e-kirja malli vastavalt vastustele
if (valikLoom == '✅ Jah 🐾 – Mul on koduloom(ad).'&& valikLoomNumber == 'Üks') {
body = bodyvalik1;
} else if (valikLoom == '✅ Jah 🐾 – Mul on koduloom(ad).'&& valikLoomNumber == 'Mitu') {
body = bodyvalik2;
} else if (valikLoom == '❌ Ei – Mul pole koduloomi.' && loomaVotteSoov.trim().startsWith('Jah')) {
body = bodyvalik3;
} else if (valikLoom == '❌ Ei – Mul pole koduloomi.' && loomaVotteSoov.trim().startsWith('Ei')) {
body = bodyvalik4;
} else {
body = bodyvalimata;
}
// Saadab e-kirja
MailApp.sendEmail(osalejaEmail, "Saime Teie vastus kätte", '', { htmlBody: body });
}
/**
* Töötleb mitmekordseid vastuseid (kastikese valikuid)
* @param {string} loomaSattusViisMitu - komadega eraldatud vastused
* @return {string} vormindatud vastused
*/
function processCheckboxAnswers(loomaSattusViisMitu) {
if (loomaSattusViisMitu == '') {
return 'Te ei vastanud küsimustele';
} else {
var answersArray = loomaSattusViisMitu.split(', ');
var answersMessages = answersArray.map(function(answer) {
if (answer == '🛍 Ostsin') {
return 'Teie ostsite oma looma.';
} else if (answer == '🏡 Võtsin varjupaigast') {
return 'Teie võtsite oma looma varjupaigast';
} else if (answer == '🏞 Leidsin tänavalt') {
return 'Teie leidsite oma looma tänavalt';
} else if (answer == '🎁 Sõbrad/tuttavad andsid ära') {
return 'Sõbrad/tuttavad andsid Teile looma ära';
} else {
return 'Valisite muu vastus: ' + answer;
}
});
return answersMessages.join(' ');
}
}
⏰ 4. Triggeri Seadistamine (Kuidas Panna Skript Automaatselt Tööle?)
4.1. Miks on Trigger Vajalik?
Ilma trigerita pead skripti käsitsi käivitama. Trigger lubab sul:
✔ Saata kirju automaatselt iga kord, kui keegi vormi täidab.
✔ Käivitada skript kindlal ajal (nt iga päev kell 18:00).
4.2. Kuidas Trigger Lisada?
- Ava oma skript (Tools → Script editor).
- Klõpsa vasakul menüüs “Triggers” (kellukese ikoon).
- Klõpsa “+ Add Trigger”.
- Vali järgmised seaded:
- Which function to run? →
sendEmailToClient
- Which runs at? →
From spreadsheet
- Select event type →
On form submit
- Which function to run? →
- Klõpsa Save.
4.3. Probleemid Trigeriga? Kontrolli Neid!
❌ Skript ei käivitu?
✅ Veendu, et:
- Trigger on seadistatud õigesti (valitud
On form submit
). - Skriptil on õigused (esimene käivitamine küsib lubasid).
- Gmaili limiit (100 kirja päevas) pole täis.
❌ Kirjad lähevad spämmi?
✅ Lisa kirja päisesse:
MailApp.sendEmail({
to: osalejaEmail,
subject: "Teie vastus on saadetud",
htmlBody: body,
replyTo: "teie@firma.ee", // Professionaalsem väljanägemine
});
5. Tulemus
Kiri lemmiklooma omanikule


Kiri osajale, kes ei ole kodulooma omanik

