javascript - Google Apps 脚本删除自动电子邮件中的 html 标签
问题描述
我需要帮助,再次。
我有这个脚本:
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: can't find function getTextFromHtml in object。
Html 替换也不起作用:
html.replace(/<[^>]+>/g, "")
我想指出如何解决这个问题的正确方向。
解决方案
- 您希望通过将 HTML 数据转换为文本数据以文本形式发送电子邮件。
- 您希望通过呈现 HTML 数据以 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 正文发送。在您的脚本中,defMessage
ofMailApp.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"});
参考:
如果我误解了您的问题并且这不是您想要的方向,我深表歉意。
推荐阅读
- json - jq在变量的帮助下更新键和值
- android - Scaffold 主体中的有状态小部件
- sql-server - 如何处理聚合根之间的引用并发?
- go - 为什么会出现致命错误:所有 goroutine 都处于休眠状态 - 死锁!在这段代码中?
- javascript - 在 node.js 中显示网络摄像头提要、捕获图像并将其保存在本地?
- c# - 401错误,此请求的授权已被拒绝
- javascript - 如何使用 JavaScript 滚动到目标 html 部分的垂直中心?
- javascript - 如何使用 javascript 中的搜索过滤器和复选框过滤器制作高级过滤器逻辑?
- assembly - 为什么 NASM 汇编 64 位 printf 不打印浮点除法的值?
- r - 比较 R 中的数据框列