Google 应用程序脚本 HTML table 样式
Google App Script HTML table styling
我在 GAS 中创建了一个函数,它从 google 工作表中获取数据并根据特定的人发送单独的电子邮件;然后该函数循环到下一个人并继续处理数据。
我现在遇到的问题是格式化我通过循环数据创建的 HTML table。当我 运行 时,数据以 table 格式显示,但我无法添加边框、颜色等。我目前在 TABLEFORMAT 变量下有样式,但我也尝试将样式标签放在 table、th、td、tr 标签中,但它似乎忽略了它。但是,我将输出放入 HTML 模拟器中,它以我想要的方式出现。
有谁知道为什么这对 gs 文件不起作用?另外,我试图让 cashGoalPosition 以美元格式显示。先谢谢您的帮助;我一直在为此绞尽脑汁,似乎无法弄清楚。
function Auto_Email(){
var ss = SpreadsheetApp.getActiveSpreadsheet();
var shData = ss.getSheetByName("E-mail Data");
var shEmail = ss.getSheetByName("E-mail List");
var dataRange = shData.getDataRange(); // Fetch values for each row in the Range.
var emailRange = shEmail.getDataRange(); //fetch values for email list
var data = dataRange.getValues();
var nameData = emailRange.getValues();
var lastCol = dataRange.getLastColumn();
for (var i = 1; i < nameData.length; i++) {
var rows = nameData[i];
var emailAddress = rows[2];//position of email header -1
var fullName = rows[1]; //position of name header -1
var firstName = rows[3]// the first name only
var cashGoalPosition = rows[0].toString(); //position of billing goal -1
var subject = firstName+"'s Cash Goal";
var htmltable = '';
var htmlmessage = "";
var TABLEFORMAT = '<!DOCTYPE html><html><style>table {border-collapse:collapse} table,td,th{border:1px solid black}</style>'
var pre_html = '<p>Dear '+firstName+',</p><p>Your new balance is <b>'+cashGoalPosition+'</b>. Below is a list of the invoices past due or due in the current month.</p><table style="width:100.0%"><tbody>'
var post_html = '<p>Regards,<br>John</p></html>'
for (row = 0; row<data.length; row++)
{
for (col = 0 ;col<data[row].length; col++){
if (row == 0 && col == 0) {htmltable += '<tr><th>' + data[row][col] + '</th>';}
else
if (row == 0 && col == lastCol - 1) {htmltable+= '<th>' + data[row][col] + '</th></tr>';}
else
if (row == 0) {htmltable+= '<th>' + data[row][col] + '</th>';}
else
if (data[row][0] == fullName && col == 0) {htmltable += '<tr><td>' + data[row][col] + '</td>';}
else
if (data[row][0] == fullName && col == lastCol -1) {htmltable += '<td>' + data[row][col] + '</td></tr>';}
else
if (data[row][0] == fullName) {htmltable += "<td>" + data[row][col] + "</td>";}
}
}
htmltable += '</tbody></table>';
htmlmessage = TABLEFORMAT + pre_html + htmltable + post_html;
Logger.log(htmlmessage)
MailApp.sendEmail(Session.getActiveUser().getEmail(), subject,'' ,{htmlBody: htmlmessage})
}(i);
}
<style>
似乎在 Gmail 的 htmlBody
上不起作用。我认为它可能会被删除。所以请使用带有样式的 table 标签。
在您的情况下,<style>table {border-collapse:collapse} table,td,th{border:1px solid black}</style>
和 <table style="width:100.0%">
可以转换为 <table style="width: 100%;border-collapse: collapse;border: 1px solid black">
。
修改后的脚本如下
发件人:
var TABLEFORMAT = '<!DOCTYPE html><html><style>table {border-collapse:collapse} table,td,th{border:1px solid black}</style>'
var pre_html = '<p>Dear '+firstName+',</p><p>Your new balance is <b>'+cashGoalPosition+'</b>. Below is a list of the invoices past due or due in the current month.</p><table style="width:100.0%"><tbody>'
收件人:
var TABLEFORMAT = '<!DOCTYPE html><html>'
var pre_html = '<p>Dear '+firstName+',</p><p>Your new balance is <b>'+cashGoalPosition+'</b>. Below is a list of the invoices past due or due in the current month.</p><table style="width: 100%;border-collapse: collapse;border: 1px solid black"><tbody>'
如果我误解了你的问题,我很抱歉。
我在 GAS 中创建了一个函数,它从 google 工作表中获取数据并根据特定的人发送单独的电子邮件;然后该函数循环到下一个人并继续处理数据。
我现在遇到的问题是格式化我通过循环数据创建的 HTML table。当我 运行 时,数据以 table 格式显示,但我无法添加边框、颜色等。我目前在 TABLEFORMAT 变量下有样式,但我也尝试将样式标签放在 table、th、td、tr 标签中,但它似乎忽略了它。但是,我将输出放入 HTML 模拟器中,它以我想要的方式出现。
有谁知道为什么这对 gs 文件不起作用?另外,我试图让 cashGoalPosition 以美元格式显示。先谢谢您的帮助;我一直在为此绞尽脑汁,似乎无法弄清楚。
function Auto_Email(){
var ss = SpreadsheetApp.getActiveSpreadsheet();
var shData = ss.getSheetByName("E-mail Data");
var shEmail = ss.getSheetByName("E-mail List");
var dataRange = shData.getDataRange(); // Fetch values for each row in the Range.
var emailRange = shEmail.getDataRange(); //fetch values for email list
var data = dataRange.getValues();
var nameData = emailRange.getValues();
var lastCol = dataRange.getLastColumn();
for (var i = 1; i < nameData.length; i++) {
var rows = nameData[i];
var emailAddress = rows[2];//position of email header -1
var fullName = rows[1]; //position of name header -1
var firstName = rows[3]// the first name only
var cashGoalPosition = rows[0].toString(); //position of billing goal -1
var subject = firstName+"'s Cash Goal";
var htmltable = '';
var htmlmessage = "";
var TABLEFORMAT = '<!DOCTYPE html><html><style>table {border-collapse:collapse} table,td,th{border:1px solid black}</style>'
var pre_html = '<p>Dear '+firstName+',</p><p>Your new balance is <b>'+cashGoalPosition+'</b>. Below is a list of the invoices past due or due in the current month.</p><table style="width:100.0%"><tbody>'
var post_html = '<p>Regards,<br>John</p></html>'
for (row = 0; row<data.length; row++)
{
for (col = 0 ;col<data[row].length; col++){
if (row == 0 && col == 0) {htmltable += '<tr><th>' + data[row][col] + '</th>';}
else
if (row == 0 && col == lastCol - 1) {htmltable+= '<th>' + data[row][col] + '</th></tr>';}
else
if (row == 0) {htmltable+= '<th>' + data[row][col] + '</th>';}
else
if (data[row][0] == fullName && col == 0) {htmltable += '<tr><td>' + data[row][col] + '</td>';}
else
if (data[row][0] == fullName && col == lastCol -1) {htmltable += '<td>' + data[row][col] + '</td></tr>';}
else
if (data[row][0] == fullName) {htmltable += "<td>" + data[row][col] + "</td>";}
}
}
htmltable += '</tbody></table>';
htmlmessage = TABLEFORMAT + pre_html + htmltable + post_html;
Logger.log(htmlmessage)
MailApp.sendEmail(Session.getActiveUser().getEmail(), subject,'' ,{htmlBody: htmlmessage})
}(i);
}
<style>
似乎在 Gmail 的 htmlBody
上不起作用。我认为它可能会被删除。所以请使用带有样式的 table 标签。
在您的情况下,<style>table {border-collapse:collapse} table,td,th{border:1px solid black}</style>
和 <table style="width:100.0%">
可以转换为 <table style="width: 100%;border-collapse: collapse;border: 1px solid black">
。
修改后的脚本如下
发件人:
var TABLEFORMAT = '<!DOCTYPE html><html><style>table {border-collapse:collapse} table,td,th{border:1px solid black}</style>'
var pre_html = '<p>Dear '+firstName+',</p><p>Your new balance is <b>'+cashGoalPosition+'</b>. Below is a list of the invoices past due or due in the current month.</p><table style="width:100.0%"><tbody>'
收件人:
var TABLEFORMAT = '<!DOCTYPE html><html>'
var pre_html = '<p>Dear '+firstName+',</p><p>Your new balance is <b>'+cashGoalPosition+'</b>. Below is a list of the invoices past due or due in the current month.</p><table style="width: 100%;border-collapse: collapse;border: 1px solid black"><tbody>'
如果我误解了你的问题,我很抱歉。