繁体   English   中英

Google Apps 脚本删除自动 email 中的 html 标记

[英]Google Apps Script remove html tags in auto email

我需要帮助,再次。

我有这个脚本:

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 页面中显示了我的两个日历。

我想每周发送一个 email 和两个功能的 output。 Function sendMail() 执行此操作,但电子邮件还包含两个函数中的 HTML 标签。

我试过了

getTextFromHtml(mail1.getBody())

但这给了我错误 TypeError: can't find function getTextFromHtml in object。

Html 替换也不起作用:

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

我想指出如何解决这个问题的正确方向。

  1. 您希望通过将 HTML 数据转换为文本数据来发送 email 作为文本。
  2. 您想通过渲染 HTML 数据将 email 作为 HTML 发送。

如果我的理解是正确的,这个答案怎么样? 请认为这只是几个答案之一。

模式一:

在此模式中,HTML 数据被转换为文本数据并发送。 为了转换为文本数据,在这种情况下,使用 Drive API 将 HTML 数据转换为 Google 文档。

修改后的脚本:

当您的脚本被修改时,请进行如下修改。 在运行脚本之前, 请在 Advanced Google services 中启用 Drive API

从:
 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"});

模式二:

在此模式中,HTML 数据作为 HTML 主体发送。 在您的脚本中,MailApp.sendEmail(emailAddress, subject, 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"});

参考:

如果我误解了您的问题并且这不是您想要的方向,我深表歉意。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM