Сценарий Google Apps удаляет HTML-теги в авто-электронной почте - PullRequest
2 голосов
/ 14 октября 2019

Мне снова нужна помощь.

У меня есть этот сценарий:

function doGet() {
  return HtmlService.createHtmlOutputFromFile('calendarApp').setTitle('CalendarApp');
}

function mailOne() {
  var date = new Date();
  var day = date.getDay();
  var firstDay = new Date(date.getFullYear(), date.getMonth(), date.getDate()-day+1);
  var lastDay = new Date(date.getFullYear(), date.getMonth(), date.getDate()-day+8);
  var events2 = CalendarApp.getCalendarById('myemail@gmail.com').getEvents(firstDay, lastDay);

  var data2 = [];
  data2.push("<b>Title</b>");
  if (events2 && events2.length > 0) {
    for (i = 0; i < events2.length; i++) {
      data2.push(Utilities.formatDate(events2[i].getStartTime(),Session.getScriptTimeZone(),"EEEE dd/MM")+ ' ' + Utilities.formatDate(events2[i].getStartTime(),Session.getScriptTimeZone(),"HH:mm") +'<br />'+events2[i].getTitle())
    }

 return data2;
  } else {
    return ['Niks te doen!'];
  }
}

function mailTwo() {


  var date = new Date();
  var day = date.getDay();
  var firstDay = new Date(date.getFullYear(), date.getMonth(), date.getDate()-day+1);
  var lastDay = new Date(date.getFullYear(), date.getMonth(), date.getDate()-day+8);
  var events3 = CalendarApp.getCalendarById('myemail2@gmail.com').getEvents(firstDay, lastDay);

  var data2 = [];
  data2.push("<b>Title</b>");
  if (events3 && events3.length > 0) {
    for (i = 0; i < events3.length; i++) {
      data2.push(Utilities.formatDate(events3[i].getStartTime(),Session.getScriptTimeZone(),"EEEE dd/MM")+ ' ' + Utilities.formatDate(events3[i].getStartTime(),Session.getScriptTimeZone(),"HH:mm") +'<br />'+events3[i].getTitle())
    }

    return data2;
  } else {
    return ['Niks te doen!'];
  }
}

function sendMail(){
 var mail1 = mailOne();
 var mail2 = mailTwo();
 var emailAddress = "myemail@gmail.com";
 var subject = "Je weekplanning";
 var defMessage = mail1 + mail2;


  MailApp.sendEmail(emailAddress, subject, defMessage, {
       name: "Automatisch gegenereerd"
});

}

Я показываю два своих календаря на html-странице.

Я хотел бы отправлять электронную почту каждую неделю с выводомдве функции. Функция sendMail () делает это, но электронные письма содержат также теги HTML, которые есть в обеих функциях.

Я пытался

getTextFromHtml(mail1.getBody())

Но это дает мне ошибку TypeError: не удается найти функциюgetTextFromHtml в объекте.

Замена HTML также не работает:

html.replace(/<[^>]+>/g, "")

Я хотел бы указать правильное направление, как решить эту проблему.

1 Ответ

2 голосов
/ 15 октября 2019
  1. Вы хотите отправить электронное письмо в виде текста, преобразовав данные HTML в текстовые данные.
  2. Вы хотите отправить электронное письмо в виде HTML, отобразив данные HTML.

Если мое понимание верно, как насчет этого ответа? Пожалуйста, подумайте об этом как об одном из нескольких ответов.

Шаблон 1:

В этом шаблоне данные HTML преобразуются в текстовые данные и отправляют их. Чтобы преобразовать в текстовые данные, в этом случае данные HTML преобразуются в Документ Google с помощью Drive API.

Модифицированный скрипт:

Когда ваш скрипт модифицирован, пожалуйста, измените его следующим образом,И прежде чем запускать сценарий, , пожалуйста, включите Drive API в расширенных службах Google .

От:
  MailApp.sendEmail(emailAddress, subject, defMessage, {
       name: "Automatisch gegenereerd"
});
До:
var tempDoc = Drive.Files.insert({title: "temp", mimeType: MimeType.GOOGLE_DOCS}, Utilities.newBlob(defMessage, MimeType.HTML)).id
defMessage = DocumentApp.openById(tempDoc).getBody().getText();
Drive.Files.remove(tempDoc);
MailApp.sendEmail(emailAddress, subject, defMessage, {name: "Automatisch gegenereerd"});

Шаблон 2:

В этом шаблоне, данные HTML отправляются как тело HTML. В вашем скрипте defMessage из MailApp.sendEmail(emailAddress, subject, defMessage, {name: "Automatisch gegenereerd"}); отправляется как текстовое тело. По этому теги HTML видны. Чтобы избежать этого, defMessage отправляется как тело HTML.

Модифицированный скрипт:

Когда ваш скрипт модифицирован, пожалуйста, измените его следующим образом.

От:
  MailApp.sendEmail(emailAddress, subject, defMessage, {
       name: "Automatisch gegenereerd"
});
До:
MailApp.sendEmail({to: emailAddress, subject: subject, htmlBody: defMessage, name: "Automatisch gegenereerd"});

Ссылки:

Если я неправильно понял ваш вопрос, и это не то направление, в котором вы хотите, прошу прощения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...