Google Apps 脚本 - 如何从 Sheet 发送 HTML 电子邮件?
Google Apps Script - How to send HTML email from Sheet?
我正在尝试编写代码以从 Sheet 发送一封 html 电子邮件。我在 GAS html 文件中有一个模板。 Gmail API 已启用。
我确实设法通过这种方式发送了一封电子邮件,其中包含已替换的占位符。但是,我只是发送 html 文件中的所有文本、标签和所有内容。
function htmlTry() {
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sample");
var lastRow = spreadsheet.getLastRow();
var name = spreadsheet.getRange(lastRow, 3).getValue();
var problem = spreadsheet.getRange(lastRow, 6).getValue();
if(problem == "Yes") {
var htmlBody = HtmlService.createHtmlOutputFromFile('htmlFile').getContent()
.replace("#name", name)
.replace("?name", name)
.replace("/name", name);
MailApp.sendEmail ("sample@email.com", "Problem: " + name, htmlBody);
}
}
我也提供了 html 文件的示例。这正是电子邮件所说的,只是它失去了缩进。
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Problem</title>
<style>
body,table,thead,tbody,tr,td,img {
padding: 0;
background-color: #23A5F3;
}
.wrapper {
padding-left: 10px;
padding-right: 10px;
}
h1,h2,h3,h4,h5,h6,p {
font-family: Trebuchet MS, Arial, sans-serif;
color:#9CD6FA;
}
p,a,li {
font-family: Trebuchet MS, Arial, sans-serif;
color:#000000;
}
</style>
</head>
<body style="background-color:#FFFFFF;">
<table width="100%">
<tbody>
<tr>
<td class="wrapper" width="600" align="center">
<table class="section header" cellpadding="0" cellspacing="0" width="600">
<tr>
<td class="column">
<table>
<tbody>
<tr>
<td align="left" style="background-color: #FFFFFF;">
<p style="text-align:justify;">Lorem ipsum</p>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
</table>
</td>
</tr>
</tbody>
</table>
</body>
</html>
感谢 Irvin Jay G. 解决了,他花时间解释了为什么我应该完全按照他们的建议去做,而不是自己思考。希望你过得愉快。
解法:
You need to use the advanced parameter called htmlBody
, as per the MailApp's sendEmail(recipient, subject, body, options) method, to show the file in html view instead of showing the pure html codes on the email message.
我能够复制你的脚本并在我的测试电子邮件帐户上得到这个结果:
这是使用 htmlBody
高级参数调整后的脚本:
function htmlTry() {
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sample");
var lastRow = spreadsheet.getLastRow();
var name = spreadsheet.getRange(lastRow, 3).getValue();
var problem = spreadsheet.getRange(lastRow, 6).getValue();
if(problem == "Yes") {
var htmlBody = HtmlService.createHtmlOutputFromFile('htmlFile').getContent()
.replace("#name", name)
.replace("?name", name)
.replace("/name", name);
MailApp.sendEmail("sample@email.com", 'Problem: '+ name, htmlBody, {
htmlBody: htmlBody
});
}
}
我正在尝试编写代码以从 Sheet 发送一封 html 电子邮件。我在 GAS html 文件中有一个模板。 Gmail API 已启用。
我确实设法通过这种方式发送了一封电子邮件,其中包含已替换的占位符。但是,我只是发送 html 文件中的所有文本、标签和所有内容。
function htmlTry() {
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sample");
var lastRow = spreadsheet.getLastRow();
var name = spreadsheet.getRange(lastRow, 3).getValue();
var problem = spreadsheet.getRange(lastRow, 6).getValue();
if(problem == "Yes") {
var htmlBody = HtmlService.createHtmlOutputFromFile('htmlFile').getContent()
.replace("#name", name)
.replace("?name", name)
.replace("/name", name);
MailApp.sendEmail ("sample@email.com", "Problem: " + name, htmlBody);
}
}
我也提供了 html 文件的示例。这正是电子邮件所说的,只是它失去了缩进。
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Problem</title>
<style>
body,table,thead,tbody,tr,td,img {
padding: 0;
background-color: #23A5F3;
}
.wrapper {
padding-left: 10px;
padding-right: 10px;
}
h1,h2,h3,h4,h5,h6,p {
font-family: Trebuchet MS, Arial, sans-serif;
color:#9CD6FA;
}
p,a,li {
font-family: Trebuchet MS, Arial, sans-serif;
color:#000000;
}
</style>
</head>
<body style="background-color:#FFFFFF;">
<table width="100%">
<tbody>
<tr>
<td class="wrapper" width="600" align="center">
<table class="section header" cellpadding="0" cellspacing="0" width="600">
<tr>
<td class="column">
<table>
<tbody>
<tr>
<td align="left" style="background-color: #FFFFFF;">
<p style="text-align:justify;">Lorem ipsum</p>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
</table>
</td>
</tr>
</tbody>
</table>
</body>
</html>
感谢 Irvin Jay G. 解决了,他花时间解释了为什么我应该完全按照他们的建议去做,而不是自己思考。希望你过得愉快。
解法:
You need to use the advanced parameter called
htmlBody
, as per the MailApp's sendEmail(recipient, subject, body, options) method, to show the file in html view instead of showing the pure html codes on the email message.
我能够复制你的脚本并在我的测试电子邮件帐户上得到这个结果:
这是使用 htmlBody
高级参数调整后的脚本:
function htmlTry() {
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sample");
var lastRow = spreadsheet.getLastRow();
var name = spreadsheet.getRange(lastRow, 3).getValue();
var problem = spreadsheet.getRange(lastRow, 6).getValue();
if(problem == "Yes") {
var htmlBody = HtmlService.createHtmlOutputFromFile('htmlFile').getContent()
.replace("#name", name)
.replace("?name", name)
.replace("/name", name);
MailApp.sendEmail("sample@email.com", 'Problem: '+ name, htmlBody, {
htmlBody: htmlBody
});
}
}