Неопределенные переменные в HTML-шаблонах для MailApp - PullRequest
0 голосов
/ 12 ноября 2018

Я пытаюсь отправить электронное письмо в формате HTML, используя MailApp.Это таблица, из которой я буду получать данные:

enter image description here

После прочтения документации и сообщений на SO я все еще не могу точно определить, почемуотправленное письмо показывает неопределенное в части переменных.

enter image description here

Буду признателен, если кто-нибудь укажет мне правильное направление.

Вот мои коды:

sendHtmlEmail.gs

function sendEmails() {
    var ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
    var lastRow = ss.getLastRow();

    var quotaLeft = MailApp.getRemainingDailyQuota();
    if((lastRow-1) > quotaLeft){
     Browser.msgBox("You have " + quotaLeft + " email quota left and you're trying to send " + (lastRow-1) + " emails. Emails were not sent.")
    } else {
      for (var row = 2; row <= lastRow; row++){
        var currentEmail = ss.getRange(row, 4).getValue(); 
        var currentContact = ss.getRange(row, 3).getValue();
        var currentNewSize = ss.getRange(row,8).getValue();
        var currentSub = ss.getRange(row, 9).getValue();
        var returnData = [currentContact, currentNewSize, currentSub];
        var html = HtmlService.createTemplateFromFile('htmlTemplate');

        html.data = returnData;
        var template = html.evaluate().getContent();
        var subjectLine = "Important notice";
        MailApp.sendEmail({to: currentEmail, subject: subjectLine, htmlBody: template}); 
       } //close for loop
        Browser.msgBox("You have successfully sent " + (lastRow-1) + " emails.")
     } //close else statement 
}

htmlTemplate.html

<!DOCTYPE html><html><head><base target="_top"></head><body style="text-align: center;font-family: Arial;">
  <div id="center" style="width:300px;border: 2px dotted grey;background:#ececec;margin:25px;margin-left:auto;
margin-right:auto;padding:15px;"><img src="https://upload.wikimedia.org/wikipedia/commons/thumb/4/4f/Simple_Alert.svg/600px-Simple_Alert.svg.png"
width="180" style="margin:10px 0px"><br /><div style=" border: 2px dotted grey;background:white;margin-right:auto; margin-left:auto;
padding:10px;"><h2>Alert</h2><h3>Important Notice <br /><br />
+ <?= data.currentContact ?> + '<br />' + <?= data.currentNewSize ?> + '<br />' + <?= data.currentSub ?> + '<br /></h3></div></body></html>'

Я знаю, что это как-то связано с htmlTemplate data.currentNewSize и т. Д., Но после настройки моих кодов они по-прежнему отображаются неопределенными, как показано на рисунке.

Ответы [ 2 ]

0 голосов
/ 12 ноября 2018

Проблема заключается в HTML-коде. Поскольку я объявил массив в sendHtmlEmail.gs, я неправильно назвал его в своем htmlTemplate.html.

В этой строке:

var returnData = [currentContact, currentNewSize, currentSub];

currentContact находится в позиции 0, currentNewSize находится в позиции 1 и т. Д.

В htmlTemplate.html мне нужно заменить эту строку:

+ <?= data.currentContact ?> + '<br />' + <?= data.currentNewSize ?> + '<br />' + <?= data.currentSub ?> + '<br /></h3></div></body></html>'

с этим:

+ <?= returnData[0];?> + '<br />' + <?= returnData[1];?> + '<br />' + <?= returnData[2];?> + '<br /></h3></div></body></html>'
0 голосов
/ 12 ноября 2018

Вы используете массив в методе, пока шаблон ожидает объект.

Заменить

    var returnData = [currentContact, currentNewSize, currentSub];

с

    var returnData = {currentContact: currentContact, currentNewSize: currentNewSize, currentSub: currentSub}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...