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.



Form submission flow for Google Forms email automation


Google Form võttab kaks erinevad teed:



Form submission flow for Google Forms email automation
Form submission flow for Google Forms email automation


Kui osalejal on koduloom



Form submission flow for Google Forms email automation


Vorm võttab kaks erinevad teed:



Form submission flow for Google Forms email automation
Form submission flow for Google Forms email automation
Form submission flow for Google Forms email automation
Form submission flow for Google Forms email automation
Form submission flow for Google Forms email automation
Form submission flow for Google Forms email automation
Form submission flow for Google Forms email automation
Form submission flow for Google Forms email automation
Form submission flow for Google Forms email automation
Form submission flow for Google Forms email automation


Tuleb vastus



Form submission flow for Google Forms email automation


Kui osalejal ei ole koduloomi



Form submission flow for Google Forms email automation


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



Form submission flow for Google Forms email automation
Form submission flow for Google Forms email automation
Form submission flow for Google Forms email automation

Tuleb vastus



Form submission flow for Google Forms email automation



2. Google Table salvestab sisestatud andmed




Google Formi andmed Google Table-is
Google Formi vastused salvestatakse Google Sheet tabelisse



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õi bodyvalik2).

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:

  1. Kas osalejaEmail on õige.
  2. Kas Gmaili päevane limiit (100 kirja) on täis.
  3. 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?

  1. Ava oma skript (Tools → Script editor).
  2. Klõpsa vasakul menüüs “Triggers” (kellukese ikoon).
  3. Klõpsa “+ Add Trigger”.
  4. Vali järgmised seaded:
    • Which function to run? → sendEmailToClient
    • Which runs at? → From spreadsheet
    • Select event type → On form submit
  5. 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



Google Forms vastus töödelduna Google Apps Scriptiga
Google Forms vastus töödelduna Google Apps Scriptiga


Kiri osajale, kes ei ole kodulooma omanik



Google Forms vastus töödelduna Google Apps Scriptiga
Google Forms vastus töödelduna Google Apps Scriptiga



6. Google Form täitmiseks