For some reason my function falls apart after adding an "else if". It worked fine when I had just if and else. Can anyone tell me what I am doing wrong. It seems like it should be working. I'm not the best at this so please be nice :)
This is the opening function.
function SendGoogleForm(e) {
var formData = e.values;
var requestor = formData[1];
var newHire = formData[2];
var globalID = formData[3];
var startDate = Utilities.formatDate(new Date(formData[4]), Session.getScriptTimeZone(), "MMM d, yyyy");
var newhireRole = formData[5];
var newhireStatus = formData[6];
if (newhireRole == "Food Care") {
var mailBody = HtmlService.createTemplateFromFile('foodCare');
mailBody.requestor = requestor;
mailBody.newHire = newHire;
mailBody.globalId = globalID;
mailBody.startDate = startDate;
mailBody.newHireRole = newhireRole;
mailBody.newHireStatus = newhireStatus;
var mailMessage = mailBody.evaluate().getContent();
var subject = "NACCC Food Care Pre-Approved On-boarding Request for " + newHire;
var recipient = 'juan.miranda@testr.com';
MailApp.sendEmail(recipient, subject, '',{htmlBody:mailMessage});
}else if (newhireRole == "Product Care"){
var mailBody = HtmlService.createTemplateFromFile('productCare');
mailBody.requestor = requestor;
mailBody.newHire = newHire;
mailBody.globalId = globalID;
mailBody.startDate = startDate;
mailBody.newHireRole = newhireRole;
mailBody.newHireStatus = newhireStatus;
var mailMessage = mailBody.evaluate().getContent();
var subject = "NACCC Product Care Pre-Approved On-boarding Request for " + newHire;
var recipient = 'juan.miranda@testr.com';
MailApp.sendEmail(recipient, subject, '',{htmlBody:mailMessage});
} else {
var mailBody = HtmlService.createTemplateFromFile('specialtyMaterials');
mailBody.requestor = requestor;
mailBody.newHire = newHire;
mailBody.globalId = globalID;
mailBody.startDate = startDate;
mailBody.newHireRole = newhireRole;
mailBody.newHireStatus = newhireStatus;
var mailMessage = mailBody.evaluate().getContent();
var subject = "NACCC Specialty Materials Pre-Approved On-boarding Request for " + newHire;
var recipient = 'juan.miranda@testr.com';
MailApp.sendEmail(recipient, subject, '',{htmlBody:mailMessage});
}
}
The Final curly bracket is in red and I have no idea why. I tried commenting out different parts of the "if" statement but for some reason it wont let me do three conditions. Any ideas? :/
The issue seems to be related to variable declaration, you're using var
and re-declaring and such.
Looks like it is time to refactor, you're doing a lot of the same thing - so let's parameterize this so that it's easier to read and debug (and follow DRY ).
You have a very common sequence of steps that construct an email, let's make this a function:
function constructEmail(file, requestor, newHire, globalId, startDate, newHireRole, newHireStatus) {
let mailBody = HtmlService.createTemplateFromFile(file);
body.requestor = requestor;
body.newHire = newHire;
body.globalId = globalId;
body.startDate = startDate;
body.newHireRole = newHireRole;
body.newHireStatus = newHireStatus;
return body.evaluate().getContent();
}
Then we can call into it and get the content as a return.
function SendGoogleForm(e) {
let formData = e.values;
let requestor = formData[1];
let newHire = formData[2];
let globalId = formData[3];
let startDate = Utilities.formatDate(new Date(formData[4]), Session.getScriptTimeZone(), "MMM d, yyyy");
let newHireRole = formData[5];
let newHireStatus = formData[6];
let mailMessage = null;
let subject = "NACCC Food Care Pre-Approved On-boarding Request for " + newHire
let recipient = 'juan.miranda@testr.com';
switch (newHireRole) {
case "Food Care":
mailMessage =
constructEmail('foodCare',
mailBody,
requestor,
newHire,
globalId,
startDate,
newHireRole,
newHireStatus);
break;
case "Product Care":
mailMessage =
constructEmail('specialtyMaterials',
mailBody,
requestor,
newHire,
globalId,
startDate,
newHireRole,
newHireStatus);
break;
default:
mailMessage =
constructEmail('productCare',
mailBody,
requestor,
newHire,
globalId,
startDate,
newHireRole,
newHireStatus);
break;
}
MailApp.sendEmail(recipient, subject, '', {
htmlBody: mailMessage
});
}
First of all, let's get used to using the let
keyword to limit the scope of our variables. Next we'll create a helper method to do the repetitive work, then we will use the switch
operation instead of the if / else if / else
syntax. This should make it easier to read, follow and debug.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.