I have a script that sends e-mails from a google sheet. The data in the sheet is populated with a google form. A few fields in the sheet use array formulas to add additional data to the sheet example: array formulas in the sheet to populate fields:
=ArrayFormula(IF(ROW(A:A)=1,"link",VLOOKUP($C:C,array!$A$2:$C$9000,3,FALSE)))
This causes "#N/A" to show in rows where no user has submitted data. I am ok with that but it is causing the script to take a long time to run. When the user submits data, a timestamp is placed in the first column. Can I use that to get the script to skip to stop if empty? Right now, I have the script checking 1000 rows but ideally it would check rows for timestamp and if no timestamp, stop.
/**
* Add a menu item that calls this script
*/
function onOpen() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var menu = [{
name: "Send Email",
functionName: "uiSendEmail"
}];
ss.addMenu("SCCCounseling", menu);
}
var EMAIL_SENT = "EMAIL_SENT";
/**
* Send the e-mail to everyone listed in the spreadsheet
*/
function uiSendEmail() {
var sheet = SpreadsheetApp.getActiveSheet();
var startRow = 2; // First row of data to process
var numRows = 1000;
var dataRange = sheet.getRange(startRow, 1, numRows, 1000)
// Fetch values for each row in the Range.
var data = dataRange.getValues();
for (var i = 0; i < data.length; ++i) {
var row = data[i];
var timestamp = row[0];
var username = row[1];
var counselor = row[2];
var date = row[3];
var sName = row[4];
var wNum = row[5];
var toemail = row[6];
var sLName= row[7];
var pin = row[8];
var link = row[9];
var cMail = row[10];
var emailSent = row[11];
var subject = "Online Counseling Appointment Confirmation - " + sName + " " + sLName + " " + wNum + " ";
var emailBody = "Online Counseling Appointment " + " - " + sName + " " + sLName + " " + wNum +
"\n\nHello " + sName +
"\n\n\nYou are scheduled for an online counseling appointment for Sacramento City College: " +
"\n\n\nDate: " + date +
"\n\nPlease follow the instructions below at least one day before your appointment to make " +
"\nsure that your computer is ready. " +
"\n\nIf your computer is not ready, you will not be able to " +
"\nparticipate in online counseling. " +
"\n\nTo cancel your appointment, please email: " +
"\n\nCounselor: " + counselor + " at " + cMail +
"\n\nYou will be required to show photo identification at the start of the appointment to verify " +
"\nyour identity. " +
"\n\n\nONE DAY BEFORE YOUR APPOINTMENT " +
"\n\nGo to the following link to test your computer readiness one day before your " +
"\nscheduled online counseling appointment: " +
"\n\nhttp://www.cccconfer.org/support/supportReadiness.aspx " +
"\n\n\nFIVE MINUTES BEFORE YOUR APPOINTMENT: " +
"\n\nGo to the following link to connect to the online counseling appointment and the " +
"\ncounselor will join you: " + link +
"\n\n\nIf you want to use the phone for audio: " +
"\n\nTelephone Conference Line: 719-785-4469, Toll-free: 1-888-450-4821 " +
"\n\nStudent PIN: " + pin +
"\n\n\nFOR ASSISTANCE CONNECTING" +
"\n\nContact CCC Confer Client Services, Monday - Friday 8am - 4pm " +
"\n\nPhone: 1-760-744-1150 ext 1537 or 1554 " +
"\n\nEmail: clientservices#cccconfer.org " +
"\n\n\nThank you " + sName;
var htmlBody = "<b>Online Counseling Appointment Confirmation" + " -</b> " + " - " + sName + " " + sLName + " " + wNum +
"<br/><br/><br/>" + "Hello " + sName + ", <br/><br/>" + "You are scheduled for an online counseling appointment for Sacramento City College: <i>" +
"<br/><br/><br/>" + "<b>Date: " + date + "<br/><br/>" + "</b><br/>" + "</i><br/>Please follow the instructions below <b>at least one day before</b> your appointment to make sure that your computer is ready." +
"<br/><br/><i>If your computer is not ready, you will not be able to participate in online counseling.</i> " + "<br/><br/> To cancel your appointment, please email: " +
"<br/><br/><font color=\"red\">Counselor:</font> " + counselor + " at " + cMail + "<br/><br/><br/>You will be required to show photo identification at the start of the appointment to verify your identity. " +
"<br/><br/><br/><b>ONE DAY BEFORE YOUR APPOINTMENT:</b> " + "<br/><br/>➢ Go to the following link to test your computer readiness one day before your scheduled online counseling appointment: " +
"<br/><br/>http://www.cccconfer.org/support/supportReadiness.aspx " +
"<br/><br/><br/><b>FIVE MINUTES BEFORE YOUR APPOINTMENT:</b>" +
"<br/><br/>➢ Go to the following link to connect to the online counseling appointment and the counselor will join you (link to counselor online room). " +
"<br/><br/> " + link +
"<br/><br/>➢ If you want to use the phone for audio: " +
"<br/><ul><li>Telephone Conference Line: 719-785-4469, Toll-free: 1-888-450-4821</li><li>Student PIN: " + pin + "</li></ul>" +
"<br/><br/><br/><b>FOR ASSISTANCE CONNECTING</b>" +
"<br/><br/>Contact CCC Confer Client Services, Monday - Friday 8am - 4pm " +
"<br/><br/>Phone: 1-760-744-1150 ext 1537 or 1554 " +
"<br/><br/>Email: clientservices#cccconfer.org " +
"<br/><br/><br/>Thank You! " + sName;
var optAdvancedArgs = {name: "SCC Counseling", htmlBody: htmlBody};
if (emailSent != EMAIL_SENT) { // Prevents sending duplicates
var subject = "Online Counseling Appointment Confirmation - " + sName + " " + wNum + " ";
MailApp.sendEmail(toemail, subject, emailBody, optAdvancedArgs);
sheet.getRange(startRow + i, 12).setValue(EMAIL_SENT);
// Make sure the cell is updated right away in case the script is interrupted
SpreadsheetApp.flush();
}
}
}
Create a simple function to test for #NA!:
function checkForNa() {
var theVal = SpreadsheetApp.getActiveSpreadsheet().getRange("A1").getValue();
if (theVal === "#NA!") {
Logger.log('it's NA');
return;
};
Logger.log('There is data. The code continued');
};
Intentionally cause an #NA! error, and run the code.
If the code works, incorporate the conditional check into your code. The return; statement will stop your code.
If you don't want your code to stop, but to skip this row, a break; statement can be used, but the break; can only be used inside of a loop. So, you'll need a nested loop to check for the #NA! value, to skip over that one line.
function checkForNa() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var startRow = 2; // First row of data to process
var numRows = 1000;
var dataRange = sheet.getRange(startRow, 2, numRows, 1000)
var data = dataRange.getValues();
for (var i = 0; i < data.length; ++i) {
var theVal = data[i][0]; //Get first value out of this row
for (var j = 0;j<1;j++) { //Only loops once
if (theVal === "#NA!") {
Logger.log('skipped this row: ' + i);
break;
};
Logger.log('loop number: ' + i);
};
};
};
This is example code. You'll need to adapt it to your code.
Just create a simple IF statement to check for a timestamp. It will work just fine. You may have to fix closing brackets because I'm not sure where they were supposed to be.
/**
* Add a menu item that calls this script
*/
function onOpen() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var menu = [{
name: "Send Email",
functionName: "uiSendEmail"
}];
ss.addMenu("SCCCounseling", menu);
}
var EMAIL_SENT = "EMAIL_SENT";
/**
* Send the e-mail to everyone listed in the spreadsheet
*/
function uiSendEmail() {
var sheet = SpreadsheetApp.getActiveSheet();
var startRow = 2; // First row of data to process
var numRows = 1000;
var dataRange = sheet.getRange(startRow, 1, numRows, 1000)
// Fetch values for each row in the Range.
var data = dataRange.getValues();
for (var i = 0; i < data.length; ++i) {
if (data[i][INDEX_OF_TIMESTAMP] != "") {
var row = data[i];
var timestamp = row[0];
var username = row[1];
var counselor = row[2];
var date = row[3];
var sName = row[4];
var wNum = row[5];
var toemail = row[6];
var sLName= row[7];
var pin = row[8];
var link = row[9];
var cMail = row[10];
var emailSent = row[11];
var subject = "Online Counseling Appointment Confirmation - " + sName + " " + sLName + " " + wNum + " ";
var emailBody = "Online Counseling Appointment " + " - " + sName + " " + sLName + " " + wNum +
"\n\nHello " + sName +
"\n\n\nYou are scheduled for an online counseling appointment for Sacramento City College: " +
"\n\n\nDate: " + date +
"\n\nPlease follow the instructions below at least one day before your appointment to make " +
"\nsure that your computer is ready. " +
"\n\nIf your computer is not ready, you will not be able to " +
"\nparticipate in online counseling. " +
"\n\nTo cancel your appointment, please email: " +
"\n\nCounselor: " + counselor + " at " + cMail +
"\n\nYou will be required to show photo identification at the start of the appointment to verify " +
"\nyour identity. " +
"\n\n\nONE DAY BEFORE YOUR APPOINTMENT " +
"\n\nGo to the following link to test your computer readiness one day before your " +
"\nscheduled online counseling appointment: " +
"\n\nhttp://www.cccconfer.org/support/supportReadiness.aspx " +
"\n\n\nFIVE MINUTES BEFORE YOUR APPOINTMENT: " +
"\n\nGo to the following link to connect to the online counseling appointment and the " +
"\ncounselor will join you: " + link +
"\n\n\nIf you want to use the phone for audio: " +
"\n\nTelephone Conference Line: 719-785-4469, Toll-free: 1-888-450-4821 " +
"\n\nStudent PIN: " + pin +
"\n\n\nFOR ASSISTANCE CONNECTING" +
"\n\nContact CCC Confer Client Services, Monday - Friday 8am - 4pm " +
"\n\nPhone: 1-760-744-1150 ext 1537 or 1554 " +
"\n\nEmail: clientservices#cccconfer.org " +
"\n\n\nThank you " + sName;
var htmlBody = "<b>Online Counseling Appointment Confirmation" + " -</b> " + " - " + sName + " " + sLName + " " + wNum +
"<br/><br/><br/>" + "Hello " + sName + ", <br/><br/>" + "You are scheduled for an online counseling appointment for Sacramento City College: <i>" +
"<br/><br/><br/>" + "<b>Date: " + date + "<br/><br/>" + "</b><br/>" + "</i><br/>Please follow the instructions below <b>at least one day before</b> your appointment to make sure that your computer is ready." +
"<br/><br/><i>If your computer is not ready, you will not be able to participate in online counseling.</i> " + "<br/><br/> To cancel your appointment, please email: " +
"<br/><br/><font color=\"red\">Counselor:</font> " + counselor + " at " + cMail + "<br/><br/><br/>You will be required to show photo identification at the start of the appointment to verify your identity. " +
"<br/><br/><br/><b>ONE DAY BEFORE YOUR APPOINTMENT:</b> " + "<br/><br/>➢ Go to the following link to test your computer readiness one day before your scheduled online counseling appointment: " +
"<br/><br/>http://www.cccconfer.org/support/supportReadiness.aspx " +
"<br/><br/><br/><b>FIVE MINUTES BEFORE YOUR APPOINTMENT:</b>" +
"<br/><br/>➢ Go to the following link to connect to the online counseling appointment and the counselor will join you (link to counselor online room). " +
"<br/><br/> " + link +
"<br/><br/>➢ If you want to use the phone for audio: " +
"<br/><ul><li>Telephone Conference Line: 719-785-4469, Toll-free: 1-888-450-4821</li><li>Student PIN: " + pin + "</li></ul>" +
"<br/><br/><br/><b>FOR ASSISTANCE CONNECTING</b>" +
"<br/><br/>Contact CCC Confer Client Services, Monday - Friday 8am - 4pm " +
"<br/><br/>Phone: 1-760-744-1150 ext 1537 or 1554 " +
"<br/><br/>Email: clientservices#cccconfer.org " +
"<br/><br/><br/>Thank You! " + sName;
var optAdvancedArgs = {name: "SCC Counseling", htmlBody: htmlBody};
if (emailSent != EMAIL_SENT) { // Prevents sending duplicates
var subject = "Online Counseling Appointment Confirmation - " + sName + " " + wNum + " ";
MailApp.sendEmail(toemail, subject, emailBody, optAdvancedArgs);
sheet.getRange(startRow + i, 12).setValue(EMAIL_SENT);
// Make sure the cell is updated right away in case the script is interrupted
SpreadsheetApp.flush();
}
}
}
If you know how many rows are usually empty (em), check those rows with r+(em+1). In the example below, I am dealing with:
1 row missing randomly
New rows populated, but column A missing
New rows populated with column A populated
I checked for all 3 conditions in a while loop.
function onRow(e){
var ss = SpreadsheetApp.getActiveSpreadsheet();
var column = ss.getRange('A:I');
var values = column.getValues(); // get all data in one call
var r = 0;
while ( (values[r] && values[r][1] != "") || (values[r] && values[r][2] != "" ) || (values[r+2] && values[r+2][2] != "" )) {
r++;
}
Related
How to make "funding breakdown" show today and the next five business days without removing the “totalfunding” of just today and adding a counter to the “fundingbreakdown” so it comes out numbered?
I am passing through my variables from build report down to the build alert function, but for some reason, it is not passing the values from my variables. Why is that happening?
I appreciate your patience as this is my very first googleappscript.
function buildreport() {
const ss = SpreadsheetApp.getActive();
let data = ss.getSheetByName('February 2023').getRange("A:M").getValues();
var PrimorNonPrim = ss.getSheetByName('February 2023').getRange("A:A").getValues();
var Regionandentity = ss.getSheetByName('February 2023').getRange("B:B").getValues();
var Currency = ss.getSheetByName('February 2023').getRange("D:D").getValues();
var Amount = ss.getSheetByName('February 2023').getRange("F:F").getValues();
var RequestDate = ss.getSheetByName('February 2023').getRange("K:K").getValues();
var BankAcctCreditDate = ss.getSheetByName('February 2023').getRange("L:L").getValues();
var PayDate = ss.getSheetByName('February 2023').getRange("M:M").getValues();
let payload = buildAlert(data);
sendAlert(payload);
}
function buildAlert(data,PrimorNonPrim,Regionandentity,Currency,Amount,RequestDate,BankAcctCreditDate,PayDate) {
let today = new Date();
let filteredData = data.filter(row => {
let requestDate = new Date(row[10]);
return requestDate.getFullYear() === today.getFullYear() &&
requestDate.getMonth() === today.getMonth() &&
requestDate.getDate() === today.getDate();
});
let totalfunding = filteredData.reduce((total, row) => total + row[5], 0);
if (filteredData.length === 0) {
let fundingBreakdown = "Nothing coming up within 5 working days";
} else {
fundingBreakdown = (PrimorNonPrim + " " +"Entity" + " " + Regionandentity + " " + "Currency" + " " + Currency + " " + "Amount" + " " + Amount + " " + "Request Date" + " " + RequestDate + " " + "Bank Account Credit Date" + " " + BankAcctCreditDate + " " + "Pay Date" + " " + PayDate)}
I am trying to create an alert based on the answer on the prompt, prompt is working but it does not show the pop up alert message after answering the prompt. Here is my script hoping someone can help please
function onOpen() {
var ui = SpreadsheetApp.getUi();
ui.prompt('Please provide your shift on the box below.', ui.ButtonSet.OK);
if (result == "morning") {
alert("We have " + Sheet17.D3 + " OT hours for TLs and " + Sheet17.D11 + " for QAs!");
}
if (result == "dawn") {
alert("We have " + Sheet17.D2 + " OT hours for TLs and " + Sheet17.D10 + " for QAs!");
}
if (result == "EM") {
alert("We have " + Sheet17.D4 + " OT hours for TLs and " + Sheet17.D12 + " for QAs!");
}
if (result == "Mid") {
alert("We have " + Sheet17.D5 + " OT hours for TLs and " + Sheet17.D13 + " for QAs!");
}
if (result == "evening") {
alert("We have " + Sheet17.D6 + " OT hours for TLs and " + Sheet17.D14 + " for QAs!");
}
if (result == "night") {
alert("We have " + Sheet17.D7 + " OT hours for TLs and " + Sheet17.D15 + " for QAs!");
}
}
Tried different scripts but still not working
The script has several problems
It's using a reserved function name that will cause that the script run every time that the spreadsheet is opened. It might work for the spreadsheet owner but it will not work for spreadsheet editors because restrictions introduced by Google several years ago that prevent that a simple on open trigger opens a user interface element.
The variable result has not being declared.
The variable Sheet17 has not being declared.
The variable alert has not being declared.
The following function shows how to use Ui.prompt
function myFunction(){
const ui = SpreadsheetApp.getUi();
const response = ui.prompt('Please provide your shift on the box below.', ui.ButtonSet.OK);
if(response.getResponseText() === 'morning'){
ui.alert('Morning message')
}
}
Note: The code should be added on a script bounded to a spreadsheet.
To learn about how to get values from a spreadsheet please read https://developers.google.com/apps-script/guides/sheets
References
https://developers.google.com/apps-script/reference/base/prompt-response
Try it this way:
function onMyOpen() {
const ui = SpreadsheetApp.getUi();
const result = ui.prompt('Please provide your shift on the box below.', ui.ButtonSet.OK).getResponseText();
const ss = SpreadsheetApp.getActive();
const sh17 = ss.getSheetByName("Sheet17");
const [D2,D3,D4,D5,D6,D7] = sh17.getRange("D2:D7").getValues().flat();
const [D10,D11,D12,D13,D14,D15] = sh17.getRange("D10:D15").getValues().flat();
if (result == "morning") {
alert("We have " + D3 + " OT hours for TLs and " + D11 + " for QAs!");
}
if (result == "dawn") {
alert("We have " + D2 + " OT hours for TLs and " + D10 + " for QAs!");
}
if (result == "EM") {
alert("We have " + D4 + " OT hours for TLs and " + D12 + " for QAs!");
}
if (result == "Mid") {
alert("We have " + D5 + " OT hours for TLs and " + D13 + " for QAs!");
}
if (result == "evening") {
alert("We have " + D6 + " OT hours for TLs and " + D14 + " for QAs!");
}
if (result == "night") {
alert("We have " + D7 + " OT hours for TLs and " + D15 + " for QAs!");
}
}
Run the following function to create installable trigger
function createOnMyOpenTrigger() {
if(ScriptApp.getProjectTriggers().filter(t => t.getHandlerFunction() == "onMyOpen").length == 0) {
ScriptApp.newTrigger("onMyOpen").forSpreadsheet(ss).onOpen().create();
}
}
Before getting too far into the what I need, I want to start out that my HTML is not connected to an internal/external server (from what I have read this may be limiting my options). I really am using it as an HTML form that my employees will be able to have a standard template when sending emails. I am still really new to this so I apologize in advance if I forgot to include some important information.
I have a form that my employees will have to fill out and click a generate email button. I have everything working except the ability to format the email body. What I need to do is Bold all the Text before the answers. (IE Region: selection here) I have shorten my code to spare you how inexperienced I am.
function sendEmail() {
let reg1 = "<b>Region Name:</b> "
let reg2 = "Region Name: "
let a = document.getElementById("reg").value;
let m_to = " Main Email Addresses here"
let m_cc = "CC Email Addresses here"
var today = new Date();
var dd = String(today.getDate()).padStart(2, '0');
var mm = String(today.getMonth() + 1).padStart(2, '0'); //January is 0!
var yyyy = today.getFullYear();
today = mm + '/' + dd + '/' + yyyy;
document.location.href = "mailto:" + encodeURIComponent(m_to) + "?cc=" + encodeURIComponent(m_cc)
+ " &subject=DEAP Activation " + encodeURIComponent(b) +": NE Region " + today
+ " "
+ "&body="
+ "%0D%0A%0D%0A"
+ encodeURIComponent(bl) + "%0D%0A%0D%0A"
+ "Region Name: " + encodeURIComponent(a) + "%0D%0A"
}
I have tried:
+ reg1 + encodeURIComponent(a) but that will display as <b>Region Name:</b>
reg2.bold() + encodeURIComponent(a) but that yielded the same result as above
reg2.bold + encodeURIComponent(a) that displayed as function bold() { [native code] }
I also tried to change + "&body=" to + "&htmlbody=" but that stopped the email form generating
Any help would be greatly appreciated
Simple call logger/lead sheet generator using Google Forms and a script to send out the lead upon submission. I'm getting a format error when the user does not input a date into the field. I don't want to require an appt. time/date in the form. Here is my code:
function sendEmails() {
//gets list of
var leadss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("LatestLeadSheet");
var leadList = leadss.getRange(3, 1, leadss.getLastRow() - 2, leadss.getLastColumn()).getValues();
var timeZone = Session.getScriptTimeZone();
var today = Utilities.formatDate(new Date(), timeZone, "MM/dd/yyyy"); //Today's date for email subject line
var fullMessage = ""; //clears fullMessage variable
// Creates body of email. Looping through each array from LatestLeadSheet tab
for (var j = 0; j < leadList.length; j++) {
var message = "Client Name: " + leadList[j][1] + "\n" +
"Client Phone: " + leadList[j][3] + "\n" +
"Client Email: " + leadList[j][8] + "\n" +
"Interested in: " + leadList[j][5] + "\n" +
"Quoted rate of: " + leadList[j][6] + "\n" +
"Notes: " + leadList[j][7] + "\n" +
"Appointment Set for: " + Utilities.formatDate(leadList[j][10], timeZone, "HH:mm MM/dd/yyyy") + "\n"
//+"At: "+Utilities.formatDate(leadList[j][11],timeZone,"h:mm a") + "\n\n"
+
"Referral Source: " + leadList[j][2] + "\n" +
"Other Info: " + leadList[j][4] + "\n" +
"Documents were sent (Y/N): " + leadList[j][9] + "\n" +
"Call was taken at: " + Utilities.formatDate(leadList[j][0], timeZone, "HH:mm MM/dd/yyyy") + "\n" +
"Call was logged by: " + leadList[j][12] + "\n\n\n\n";
var fullMessage = fullMessage + message;
}
//Sends email to each recipient listed on SalesTeam tab
var subject = "DMS Call Sheet from: " + today;
var emailss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("SalesTeam");
var lr = emailss.getLastRow();
for (var i = 2; i <= lr; i++) {
var currentEmail = emailss.getRange(i, 2).getValue();
MailApp.sendEmail(currentEmail, subject, "Please follow up with the following potential clients: \n\n" + fullMessage)
}
}
I want to start off by saying I have no idea what I am doing with HTML and Javascript but I am trying to learn. What I am creating will not be hosted by any server , it is more of a HTML web form(I think that is what i would call it) for employees to fill out and create a standardized email. I have 97% of it working but need a little help with the last part. Below is the Javascript that works:
function populateEmail() {
let bl = document.getElementById("blurb").value;
let a = document.getElementById("reg").value;
let b = document.getElementById("lvl").value;
let c = document.getElementById("node").value;
let i = document.getElementById("cust").value;
let d = document.getElementById("rea").value;
let e = document.getElementById("ma").value;
let f = document.getElementById("start_dt").value.replace("T", " ");
let g = document.getElementById("poc").value;
let h = document.getElementById("appr").value;
let m_to = "DL-ListOne; DL-ListTwo; DL-ListThree"
let m_cc = "DL-ListFour; DL-ListFive;"
let today = new Date();
let dd = String(today.getDate()).padStart(2, '0');
let mm = String(today.getMonth() + 1).padStart(2, '0'); //January is 0!
let yyyy = today.getFullYear();
today = mm + '/' + dd + '/' + yyyy;
let notify = document.getElementById("notify_lvl").value;
if (notify == "Initial"){
let deap = "Activation ";
}
else if (notify == "Update"){
let deap = "Update ";
}
else{
let deap = "De-Activation ";
}
document.location.href = "mailto:" + encodeURIComponent(m_to) + "?cc=" + encodeURIComponent(m_cc)
+ " &subject=DEAP " + encodeURIComponent(b) + ": Any Region " + today
+ " "
+ "&body="
+ "%0D%0A%0D%0A"
+ encodeURIComponent(bl) + "%0D%0A%0D%0A"
+ "Name: " + encodeURIComponent(a) + "%0D%0A"
+ "Activation – (" + encodeURIComponent(b)
+ "Current Impact = " + encodeURIComponent(c) + " modules, " + encodeURIComponent(i) + " customers) %0D%0A"
+ "Reason: " + encodeURIComponent(d) + "%0D%0A"
+ "Event Geographical Area: " + encodeURIComponent(e) + "%0D%0A"
+ "Event Start: " + encodeURIComponent(f) + "%0D%0A"
+ "POC: " + encodeURIComponent(g) + "%0D%0A"
+ "Approved by: " + encodeURIComponent(h) + "%0D%0A"
}
Now when I try and add the Variable deap to the subject line it stops creating the email. Here are the different ways I have tried to add it.
+ " &subject=DEAP " + deap + encodeURIComponent(b) + ": NE Region " + today
+ " &subject=DEAP " + encodeURIComponent(deap) + encodeURIComponent(b) + ": NE Region " + today
then I thought that maybe I had to add some text or space in there to have it take affect so I tried adding + " " + after the variable deap
I am trying to keep the post to a minimum, if you need my ugly looking HTML I will be happy to post it
but I am still trying to figure out how to load div from Javascript so my code isn't DRY.
Thank you in advance for your time
It's because you're declaring deap inside your if statements:
if ('notify' == "Initial") {
let deap = "Activation ";
} else if ('notify' == "Update") {
let deap = "Update ";
} else {
let deap = "De-Activation ";
}
console.log(deap);
If you declare it outside and reassign it inside your if blocks, it should work:
let deap;
if ('notify' == "Initial") {
deap = "Activation ";
} else if ('notify' == "Update") {
deap = "Update ";
} else {
deap = "De-Activation ";
}
console.log(deap)