我正在嘗試發送一封包含表格的電子郵件,我已經設法創建了表格,但無法弄清楚我如何復制包括背景顏色和數字格式在內的格式,因為某些單元格包含貨幣以及百分比和純數字。
由于資料是彩色編碼的,因此將它們復制到電子郵件中很重要。
這是我的代碼,如果有人能指出我正確的方向,那將非常有幫助,這是我到目前為止的代碼......
function createTable(data){
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1");
//To be looped in the future, 10 in range to be replaced with k
var dataRange = sheet.getRange(10,4,1,9);
var data = dataRange.getValues();
//Table Header
var table = "<html><body><br><table border=1><tr><th>Compliance Score</th><th>STSOR Value</th><th>STSOR %</th><th>ZZ lines</th><th>ZZ%</th><th>PI lines Counted</th><th>PI %</th><th>NRDS Value</th><th>NRDS %</tr></br>";
//table Body
for (var i = 0; i < data.length; i ){
cells = data[i]; //puts each cell in an array position
table = table "<tr>";
for (var u = 0; u < cells.length; u ){
table = table "<td>" cells[u] "</td>";
}
table = table "</tr>"
//Send the email:
MailApp.sendEmail({
to: "[email protected]",
subject: "Example",
htmlBody: table});
}
}
uj5u.com熱心網友回復:
我相信你的目標如下。
- 您想要創建一個包含單元格背景顏色和數字格式的 HTML 表格。
在這種情況下,如何進行以下修改?
修改后的腳本:
function createTable() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1");
var dataRange = sheet.getRange(10, 4, 1, 9);
var backgrounds = dataRange.getBackgrounds(); // Added
var data = dataRange.getDisplayValues(); // Modified
var table = "<html><body><br><table border=1><tr><th>Compliance Score</th><th>STSOR Value</th><th>STSOR %</th><th>ZZ lines</th><th>ZZ%</th><th>PI lines Counted</th><th>PI %</th><th>NRDS Value</th><th>NRDS %</tr></br>";
for (var i = 0; i < data.length; i ) {
cells = data[i];
table = table "<tr>";
for (var u = 0; u < cells.length; u ) {
table = table `<td style="background-color:${backgrounds[i][u]}">` cells[u] "</td>"; // Modified
}
table = table "</tr>"
MailApp.sendEmail({
to: "[email protected]",
subject: "Example",
htmlBody: table
});
}
}
參考:
- 獲取顯示值()
uj5u.com熱心網友回復:
好吧,沒有直接的方法可以做到這一點,因為您正在嘗試將從電子表格中抓取的表格資料轉換為純 HTML。
但是,如果您進行一些簡單的格式化,這仍然可以輕松完成。在您的示例中,我添加了:
- 背景顏色:我通過使用該
getBackgrounds()函式收集范圍內所有單元格的背景顏色來完成此操作(您可以在此處閱讀有關它的更多資訊),然后使用 CSS 為每個單元格設定該背景顏色的樣式。 - 基本格式:我已經通過使用該
getNumberFormats()函式(您可以在此處閱讀更多內容)實作了這一點,然后如果該單元格被格式化為貨幣或百分比,則粗略地添加一個美元符號或百分比。 - 與您的詢問無關,但我已將
sendEmail您的部分代碼移出回圈。在您提供的代碼中,您將為收集的每一行資料發送一封電子郵件。
function createTable(data){
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1");
//To be looped in the future, 10 in range to be replaced with k
var dataRange = sheet.getRange(10,4,1,9);
var data = dataRange.getValues();
var colors = dataRange.getBackgrounds();
var formats = dataRange.getNumberFormats();
//Table Header
var table = "<html><body><br><table border=1><tr><th>Compliance Score</th><th>STSOR Value</th><th>STSOR %</th><th>ZZ lines</th><th>ZZ%</th><th>PI lines Counted</th><th>PI %</th><th>NRDS Value</th><th>NRDS %</tr></br>";
//table Body
for (var i = 0; i < data.length; i ){
cells = data[i]; //puts each cell in an array position
table = table "<tr>";
for (var u = 0; u < cells.length; u ){
var cellColor = colors[i][u];
var format = formats[i][u];
var finalValue;
if (format.includes("$")){finalValue = "$" cells[u];}
else if (format.includes("%")){finalValue = (parseFloat(cells[u]) * 100).toString() " %"}
else {finalValue = cells[u];}
table = table "<td style='background-color:" cellColor "'>" finalValue "</td>";
}
table = table "</tr>"
}
//Send the email:
MailApp.sendEmail({
to: "[email protected]",
subject: "Example",
htmlBody: table});
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/428180.html
上一篇:在For回圈中獲取2個變數
