问题描述
我已经在GAS中创建了一个功能,该功能可以从Google表格中获取数据并根据特定的人发送单独的电子邮件;函数然后循环到下一个人并继续读取数据。
I've created a function within GAS that takes data from google sheets and sends out individual emails based on a specific person; the function then loops to the next person and continues through the data.
我现在遇到的问题是格式化通过循环遍历创建的HTML表的格式。数据。运行此数据时,数据以表格格式显示,但无法添加边框,颜色等。我目前在TABLEFORMAT变量下具有样式设置,但我也尝试过将样式标签放入表格中,例如th,td,tr标签,但似乎忽略了它。但是,我将输出放入HTML模拟器中,结果以我想要的方式显示出来。
What I am having issue with now is formatting the HTML table that I've created by looping through the data. When I run this the data shows up in a table format but I am unable to add borders, color, ect. I currently have the styling under the TABLEFORMAT variable but I've also tried putting the style tags within the table, th, td, tr tags, but it just seems to ignore it. However, I put the output into an HTML simulator and it comes out the way I want it.
有人知道为什么这不适用于gs文件吗?另外,我正在尝试使cashGoalPosition为美元格式。先谢谢您的帮助;我一直为此绞尽脑汁,似乎无法弄清楚。
Does anyone know why this wouldnt work with a gs file? Also, I'm trying to get cashGoalPosition to be in dollar format. Thanks in advance for the help; I've been racking my brain with this and can't seem to figure it out.
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);
}
推荐答案
似乎$ c>< style> 在Gmail的 htmlBody
上不起作用。我认为它可能会被删除。因此,请使用具有样式的表标签。
It seems that <style>
doesn't work at htmlBody
of Gmail. I think that it might be removed. So please use the table tag with the style.
在您的情况下,< style> table {border-collapse:collapse} table,td ,th {border:1px纯黑色}< / style>
和< table style = width:100.0%>
可以是转换为< table style = width:100%; border-collapse:塌陷; border:1px纯黑色>
。
In your case, <style>table {border-collapse:collapse} table,td,th{border:1px solid black}</style>
and <table style="width:100.0%">
can be converted to <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>'
到:
To :
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>'
如果我误解了您的问题,很抱歉。
If I misunderstand your question, I'm sorry.
这篇关于Google App Script HTML表格样式的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!