whenever i use the following code to send html email, i receive only the subject and "HtmlTemplate" word rather than the mail body itself, kindly help, i need to bulk html emails that are dynamically filled by the data from the spreadsheets.
function sendEmail(){
var ss = SpreadsheetApp.getActiveSpreadsheet()
var sheet1=ss.getSheetByName('Sheet1');
var n=sheet1.getLastRow();
for (var i = 2; i < n 1 ; i ) {
var emailAddress = sheet1.getRange(i,3).getValue();
var cc = "[email protected]"
var subject = "Testmail";
var body = HtmlService.createTemplateFromFile("email");
body.الاسم=sheet1.getRange(i,2).getValue();
body.رقمالتليفون=sheet1.getRange(i,4).getValue();
body.رقمالبطاقة=sheet1.getRange(i,5).getValue();
body.المحكمة=sheet1.getRange(i,6).getValue();
body.وجهةالسفرمنمحافظةيرجىكتابةمحافظةالاقامةفقط=sheet1.getRange(i,7).getValue();
body.وجهةالسفرالىمحافظةيرجىكتابةمحافظةالعملفقط=sheet1.getRange(i,8).getValue();
body.تاريخرحلةالسفرالأوليالأسبوعالأول=sheet1.getRange(i,9).getValue();
body.ساعةرحلةالسفر1=sheet1.getRange(i,10).getValue();
body.تاريخرحلةالعودةالأوليالأسبوعالأول=sheet1.getRange(i,11).getValue();
body.ساعةالرحلةالمطلوبةللعودة1=sheet1.getRange(i,12).getValue();
body.تاريخرحلةالسفرالثانيةالأسبوعالثاني=sheet1.getRange(i,13).getValue();
body.ساعةالرحلةالمطلوبةللسفر2=sheet1.getRange(i,14).getValue();
body.تاريخرحلةالعودةالثانيةالأسبوعالثاني=sheet1.getRange(i,15).getValue();
body.ساعةالرحلةالمطلوبةللعودة2=sheet1.getRange(i,16).getValue();
body.تاريخرحلةالسفرالثالثةالأسبوعالثالث=sheet1.getRange(i,17).getValue();
body.ساعةالرحلةالمطلوبةللسفر3=sheet1.getRange(i,18).getValue();
body.تاريخرحلةالعودةالثالثةالأسبوعالثالث=sheet1.getRange(i,19).getValue();
body.ساعةالرحلةالمطلوبةللعودة3=sheet1.getRange(i,20).getValue();
body.تاريخرحلةالسفرالرابعةالأسبوعالرابع=sheet1.getRange(i,21).getValue();
body.ساعةالرحلةالمطلوبةللسفر4=sheet1.getRange(i,22).getValue();
body.تاريخرحلةالعودةالرابعةالأسبوعالرابع=sheet1.getRange(i,23).getValue();
body.ساعةالرحلةالمطلوبةللعودة4=sheet1.getRange(i,24).getValue();
body.تاريخرحلةالسفرالخامسةالأسبوعالخامس=sheet1.getRange(i,25).getValue();
body.ساعةالرحلةالمطلوبةللسفر5=sheet1.getRange(i,26).getValue();
body.تاريخرحلةالعودةالخامسةالأسبوعالخامس=sheet1.getRange(i,27).getValue();
body.ساعةالرحلةالمطلوبةللعودة5=sheet1.getRange(i,28).getValue();
MailApp.sendEmail(emailAddress,subject, body,{cc: cc});
}
}
CodePudding user response:
You are creating a HTML template and substituting values from the sheet in the template. You need to evaluate()
the template as I've shown in the MailApp.sendEmail()
line of code.
I would suggest you change your code to significantly reduce the number of getValue()
calls.
Also you don't post your HTML template so I can't verify this will work.
function sendEmail(){
var ss = SpreadsheetApp.getActiveSpreadsheet()
var sheet1=ss.getSheetByName('Sheet1');
var values = sheet1.getDataRange().getValues();
for (var i = 1; i < values.length ; i ) {
var emailAddress = values[i][2];
var cc = "[email protected]"
var subject = "Testmail";
var body = HtmlService.createTemplateFromFile("email");
body.الاسم= values[i][1];
body.رقمالتليفون = values[i][3];
body.رقمالبطاقة = values[i][4];
body.المحكمة = values[i][5];
body.وجهةالسفرمنمحافظةيرجىكتابةمحافظةالاقامةفقط = values[i][6];
body.وجهةالسفرالىمحافظةيرجىكتابةمحافظةالعملفقط = values[i][7];
body.تاريخرحلةالسفرالأوليالأسبوعالأول = values[i][8]
body.ساعةرحلةالسفر1 = values[i][9];
body.تاريخرحلةالعودةالأوليالأسبوعالأول = values[i][10];
body.ساعةالرحلةالمطلوبةللعودة1 = values[i][11];
body.تاريخرحلةالسفرالثانيةالأسبوعالثاني = values[i][12];
body.ساعةالرحلةالمطلوبةللسفر2 = values[i][13];
body.تاريخرحلةالعودةالثانيةالأسبوعالثاني = values[i][14];
body.ساعةالرحلةالمطلوبةللعودة2 = values[i][15];
body.تاريخرحلةالسفرالثالثةالأسبوعالثالث = values[i][16];
body.ساعةالرحلةالمطلوبةللسفر3 = values[i][17];
body.تاريخرحلةالعودةالثالثةالأسبوعالثالث = values[i][18];
body.ساعةالرحلةالمطلوبةللعودة3 = values[i][19];
body.تاريخرحلةالسفرالرابعةالأسبوعالرابع = values[i][20];
body.ساعةالرحلةالمطلوبةللسفر4 = values[i][21];
body.تاريخرحلةالعودةالرابعةالأسبوعالرابع = values[i][22];
body.ساعةالرحلةالمطلوبةللعودة4 = values[i][23];
body.تاريخرحلةالسفرالخامسةالأسبوعالخامس = values[i][24];
body.ساعةالرحلةالمطلوبةللسفر5 = values[i][25];
body.تاريخرحلةالعودةالخامسةالأسبوعالخامس = values[i][26];
body.ساعةالرحلةالمطلوبةللعودة5 = values[i][27];
MailApp.sendEmail(emailAddress,subject, body.evaluate(),{cc: cc});
}
}
Reference
CodePudding user response:
I did not try this, but you can try to change/add the following:
var body = HtmlService.createTemplateFromFile("email");
var normalBody = '';
MailApp.sendEmail(emailAddress,subject, normalBody,{htmlBody: body, cc: cc});
If you do it this way, your htmlBody is inside options object... Good luck!
Edited: You can also change only one line:
MailApp.sendEmail(emailAddress,subject, '',{htmlBody: body, cc: cc});