"I have installed the onFormSubmit trigger, but the Logger.log() shows an empty response. Here is my trigger configuration and my code."
Log file:
Mar 28, 2025, 9:34:06 AM Info {"authMode":"FULL","response":{},"source":{},"triggerUid":"1839349930"}
Mar 28, 2025, 9:34:06 AM Info Het 'e'-object of 'e.values' is niet beschikbaar.
function testSendConfirmationEmail() {
var mockEvent = {
values: [
"2025-03-26 12:00:00",
"john.doe@gmail.com",
"john doe",
"john.doe@gmail.com",
"0478123456",
"M",
"Jas met lange mouwen - €31,5",
"Keuze2",
"John Doe",
"",
"31.5",
],
};
sendConfirmationEmail(mockEvent);
}
function sendConfEmail(e) {
Logger.log(JSON.stringify(e)); // Log het volledige event-object als JSON
if (!e || !e.values) {
Logger.log("Het 'e'-object of 'e.values' is niet beschikbaar.");
return;
}
Logger.log(e);
var responses = e.values;
// Aangepaste kolomindexen gebaseerd op jouw indeling
var timestamp = responses[0] || "Geen timestamp ingevuld"; // Kolom A
var email = responses[1] || "Geen e-mailadres ingevuld"; // Kolom B
var naam = responses[2] || "Geen naam ingevuld"; // Kolom C
var alternatiefEmail =
responses[3] || "Geen alternatief e-mailadres ingevuld"; // Kolom D
var telefoonnummer = responses[4] || "Geen telefoonnummer ingevuld"; // Kolom E
var maat = responses[5] || "Geen maat ingevuld"; // Kolom F
var keuze1 = responses[6] || "Geen keuze opgegeven"; // Kolom G
var keuze2 = responses[7] || ""; // Kolom H
var naamJas = responses[8] || "Geen naam voor jas ingevuld"; // Kolom I
var prijs = responses[10] || "Onbekend"; // Kolom K
Logger.log("Naam: " + naam);
Logger.log("E-mailadres: " + email);
Logger.log("Alternatief E-mailadres: " + alternatiefEmail);
Logger.log("Telefoonnummer: " + telefoonnummer);
Logger.log("Maat: " + maat);
Logger.log("Keuze 1: " + keuze1);
Logger.log("Keuze 2: " + keuze2);
Logger.log("Naam (jas): " + naamJas);
Logger.log("Prijs: " + prijs);
// E-mailinhoud
var subject = "Bevestiging van uw bestelling";
var body =
"Beste " +
naam +
",\n\nBedankt voor uw bestelling! Hier is een overzicht:\n\n" +
"Timestamp: " +
timestamp +
"\n" +
"E-mailadres: " +
email +
"\n" +
"Telefoonnummer: " +
telefoonnummer +
"\n" +
"Maat: " +
maat +
"\n" +
"Gekozen item: " +
keuze1 +
" + " +
keuze2 +
"\n" +
"Naam (jas): " +
naamJas +
"\n" +
"Prijs: €" +
prijs +
"\n\n" +
"Met vriendelijke groet,\nHe team";
try {
MailApp.sendEmail(email, subject, body);
Logger.log("E-mail verzonden naar: " + email);
} catch (error) {
Logger.log(
"Er is een fout opgetreden bij het verzenden van de e-mail: " +
error.message
);
}
}
In line with @doubleunary’s answer, and to provide more information about it, I have refactored your existing code and utilized the FormResponse to get the values directly from the submitted form
using container-bound script. This alternative way doesn't necessarily need to go through a spreadsheet.
In order for the Form Trigger to work this way, you need to get the values from the form using the method:
var formResponse = e.response;
var itemResponses = formResponse.getItemResponses();
Instead of using var responses = e.values;
since it’s being directly accessed through the form without going through Google sheets. There can be ways to get the responses from the form more efficiently, but the simplest way to understand the code and add default values is by the following:
var timestamp = formResponse.getTimestamp() || "Geen timestamp ingevuld";
var email = itemResponses[0] ? itemResponses[0].getResponse() : "Geen e-mailadres ingevuld";
var naam = itemResponses[1] ? itemResponses[1].getResponse() : "Geen naam ingevuld";
var alternatiefEmail = itemResponses[2] ? itemResponses[2].getResponse() : "Geen alternatief e-mailadres ingevuld";
var telefoonnummer = itemResponses[3] ? itemResponses[3].getResponse() : "Geen telefoonnummer ingevuld";
var maat = itemResponses[4] ? itemResponses[4].getResponse() : "Geen maat ingevuld";
var keuze1 = itemResponses[5] ? itemResponses[5].getResponse() : "Geen keuze opgegeven";
var keuze2 = itemResponses[6] ? itemResponses[6].getResponse() : "";
var naamJas = itemResponses[7] ? itemResponses[7].getResponse() : "Geen naam voor jas ingevuld";
var prijs = itemResponses[8] ? itemResponses[8].getResponse() : "Onbekend";
Here’s how your complete code looks like with my modification:
function sendConfEmail(e) {
var formResponse = e.response;
var itemResponses = formResponse.getItemResponses();
Logger.log(JSON.stringify(e));
if (!e || !e.response) {
Logger.log("Het 'e'-object of 'e.values' is niet beschikbaar.");
return;
}
Logger.log(e);
var timestamp = formResponse.getTimestamp() || "Geen timestamp ingevuld";
var email = itemResponses[0] ? itemResponses[0].getResponse() : "Geen e-mailadres ingevuld";
var naam = itemResponses[1] ? itemResponses[1].getResponse() : "Geen naam ingevuld";
var alternatiefEmail = itemResponses[2] ? itemResponses[2].getResponse() : "Geen alternatief e-mailadres ingevuld";
var telefoonnummer = itemResponses[3] ? itemResponses[3].getResponse() : "Geen telefoonnummer ingevuld";
var maat = itemResponses[4] ? itemResponses[4].getResponse() : "Geen maat ingevuld";
var keuze1 = itemResponses[5] ? itemResponses[5].getResponse() : "Geen keuze opgegeven";
var keuze2 = itemResponses[6] ? itemResponses[6].getResponse() : "";
var naamJas = itemResponses[7] ? itemResponses[7].getResponse() : "Geen naam voor jas ingevuld";
var prijs = itemResponses[8] ? itemResponses[8].getResponse() : "Onbekend";
Logger.log("Naam: " + naam);
Logger.log("E-mailadres: " + email);
Logger.log("Alternatief E-mailadres: " + alternatiefEmail);
Logger.log("Telefoonnummer: " + telefoonnummer);
Logger.log("Maat: " + maat);
Logger.log("Keuze 1: " + keuze1);
Logger.log("Keuze 2: " + keuze2);
Logger.log("Naam (jas): " + naamJas);
Logger.log("Prijs: " + prijs);
var subject = "Bevestiging van uw bestelling";
var body =
"Beste " +
naam +
",\n\nBedankt voor uw bestelling! Hier is een overzicht:\n\n" +
"Timestamp: " +
timestamp +
"\n" +
"E-mailadres: " +
email +
"\n" +
"Telefoonnummer: " +
telefoonnummer +
"\n" +
"Maat: " +
maat +
"\n" +
"Gekozen item: " +
keuze1 +
" + " +
keuze2 +
"\n" +
"Naam (jas): " +
naamJas +
"\n" +
"Prijs: €" +
prijs +
"\n\n" +
"Met vriendelijke groet,\nHe team";
try {
MailApp.sendEmail(email, subject, body);
Logger.log("E-mail verzonden naar: " + email);
} catch (error) {
Logger.log(
"Er is een fout opgetreden bij het verzenden van de e-mail: " +
error.message
);
}
}
Once, you have followed the container-bound script (Form → Extension → Apps script) and pasted the code above, you may now create an On Form Submit. See the below image for your reference:
If you have completed all these steps. You can now test the script by submitting a response from your form.
Here’s how the execution log should look like:
Reference: FormResponse