Reputation: 3
I am new in the script life. I would like send a email based on multiple cell values. The email is working but sometimes I have only 1 PO to sent, so my current code will be sending PO1 + 9 empty lines and my email is now super long.
I think that I need to create an IF statement but am not sure where to start.
function mailtest() {
var TO = SpreadsheetApp.getActiveSheet().getRange('N3').getValue();
var CC = SpreadsheetApp.getActiveSheet().getRange('N5').getValue();
var SUBJECT = SpreadsheetApp.getActiveSheet().getRange('L9').getValue();
var TEXT = SpreadsheetApp.getActiveSheet().getRange('L11').getValue();
var TEXT2 = SpreadsheetApp.getActiveSheet().getRange('L13').getValue();
var PO1 = SpreadsheetApp.getActiveSheet().getRange('L15').getValue();
var PO2 = SpreadsheetApp.getActiveSheet().getRange('L16').getValue();
var PO3 = SpreadsheetApp.getActiveSheet().getRange('L17').getValue();
var PO4 = SpreadsheetApp.getActiveSheet().getRange('L18').getValue();
var PO5 = SpreadsheetApp.getActiveSheet().getRange('L19').getValue();
var PO6 = SpreadsheetApp.getActiveSheet().getRange('L20').getValues();
var PO7 = SpreadsheetApp.getActiveSheet().getRange('L21').getValues();
var PO8 = SpreadsheetApp.getActiveSheet().getRange('L22').getValues();
var PO9 = SpreadsheetApp.getActiveSheet().getRange('L23').getValues();
var P10 = SpreadsheetApp.getActiveSheet().getRange('L24').getValues();
var signature = Gmail.Users.Settings.SendAs.list("me").sendAs.filter(function(account){if(account.isDefault){return true}})[0].signature;
MailApp.sendEmail({
to: TO,
subject: SUBJECT,
cc: CC,
htmlBody:
TEXT+"<br><br>"+
TEXT2+"<br><br>"+
//here is the problem ? I dont want PO3&4&5&6 if I only have 2 PO.
PO1+"<br>"+
PO2+"<br>"+
PO3+"<br>"+
PO4+"<br>"+
PO5+"<br>"+
PO6+"<br>"+
PO7+"<br>"+
PO8+"<br>"+
PO9+"<br>"+
P10+"<br><br>"+
signature
});
}
Upvotes: 0
Views: 1581
Reputation: 8069
You want to include variables in an email only if the variable has a value. The following code differs from yours in several ways.
sheet.getRange(15,12,10,1).getValues();
This enables evaluation of the contents without complicated variable handlingfor (var i=0; i<PO.length;i++){
, andif ( if (POValue){){
POText = POText+POValue+"<br>"
); otherwise, that PO is not included in the email text.function so58564238() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheetname = "58564238";
var sheet = ss.getSheetByName(sheetname);
var POText = "";
var PO = sheet.getRange(15,12,10,1).getValues();
for (var i=0; i<PO.length;i++){
var POValue = PO[i][0];
if (POValue){
POText = POText+POValue+"<br>"
}
}
Logger.log(POText)
}
Incorporating the mailtest
function mailtest() {
var TO = SpreadsheetApp.getActiveSheet().getRange('N3').getValue();
var CC = SpreadsheetApp.getActiveSheet().getRange('N5').getValue();
var SUBJECT = SpreadsheetApp.getActiveSheet().getRange('L9').getValue();
var TEXT = SpreadsheetApp.getActiveSheet().getRange('L11').getValue();
var TEXT2 = SpreadsheetApp.getActiveSheet().getRange('L13').getValue();
var POText = "";
var PO = sheet.getRange(15,12,10,1).getValues();
for (var i=0; i<PO.length;i++){
var POValue = PO[i][0]
if (POValue){
POText = POText+POValue+"<br>"
}
}
var signature = Gmail.Users.Settings.SendAs.list("me").sendAs.filter(function(account){if(account.isDefault){return true}})[0].signature;
MailApp.sendEmail({
to: TO,
subject: SUBJECT,
cc: CC,
htmlBody:
TEXT+"<br><br>"+
TEXT2+"<br><br>"+
POText+"<br>"+
signature
});
}
Upvotes: 2