Google Apps Script: SendMail from form




1. Google Form




Kõik esimesel lehel on täitmiseks kohustuslik.





Vorm 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




/**
 * @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. Trigger




LIsame trigger automaatselt kirja saatmiseks



Adds Script –>>Triggerid–>>Lisa Trigger

  • Valitud Funktsioon —>sendEmailToClient
  • Allikas–>Tabel
  • Sündmus–>Vormi esitamisel

Salvesta




5. Tulemus




Kiri lemmiklooma omanikule





Kiri osajale, kes ei ole kodulooma omanik






6. Google Form täitmiseks




Laadimine…