如何在Google Apps Script邮件报表中设置表格居中与SLA%列格式化
解决Google Apps Script邮件报表的两个问题:表格居中与百分比格式
问题分析
原代码存在两处核心问题:
- HTML样式语法错误(如
style = bgcolor = "Black"的不规范写法、表头标签嵌套错误)导致表格内容无法居中; - 未对SLA %列做百分比格式化处理,直接输出原始数值。
修改方案
1. 表格内容居中对齐
- 修正HTML样式的语法,使用标准CSS内联写法;
- 给表格添加整体样式(边框合并、整体居中),同时给所有单元格设置
text-align: center实现内容居中; - 修正表头标签嵌套错误,直接用
<th>作为表头单元格。
2. SLA %列百分比格式化
- 先确定SLA %列在表格中的索引(从0开始计数,比如第4列对应索引3,可根据实际调整);
- 遍历到该列时,将数值格式化为带百分号的字符串,保留两位小数(可按需调整精度)。
修改后的完整代码
function getData() { var sheet = SpreadsheetApp.getActiveSpreadsheet(); var sheet1 = sheet.getSheetByName('Summary'); var datavalues = sheet1.getDataRange().getValues(); // 替换为你的SLA%列索引(从0开始计数),示例为第4列 const slaColumnIndex = 3; // 初始化HTML,添加表格整体样式 var html = "Dear All,<br><br>Please find the daily report as below.<br><br>" + '<table style="border-collapse: collapse; margin: 0 auto;">'; if (datavalues.length > 0) { for (var i = 0; i < datavalues.length; i++) { // 表头行背景样式 var trStyle = i === 0 ? 'style="background-color: black;"' : ''; html += `<tr ${trStyle}>`; for (var j = 0; j < datavalues[i].length; j++) { var cellValue = datavalues[i][j]; // 处理表头单元格 if (i === 0) { html += Utilities.formatString( '<th style="background-color: orange; border: 2px solid black; text-align: center; padding: 8px; color: white;">%s</th>', cellValue ); } else { // 格式化SLA%列数值为百分比 if (j === slaColumnIndex && typeof cellValue === 'number') { cellValue = Utilities.formatString("%.2f%%", cellValue * 100); } // 数据单元格样式 html += Utilities.formatString( '<td style="border: 2px solid black; text-align: center; padding: 8px;">%s</td>', cellValue ); } } html += '</tr>'; } } html += '</table>'; return html; } function sendEmail(){ MailApp.sendEmail({ to:"xxxxx.xxxx@xxxxxx.com", subject: "Daily Report", htmlBody: getData() }); }
关键改动说明
- 表格添加
border-collapse: collapse让边框合并更美观,margin: 0 auto实现表格在邮件中居中显示; - 所有单元格添加
padding: 8px优化内容间距,提升可读性; - 通过
slaColumnIndex灵活指定SLA%列位置,使用Utilities.formatString统一格式为带两位小数的百分比; - 表头添加
color: white让黑色背景上的文字更清晰(可按需移除)。
内容的提问来源于stack exchange,提问作者Moe
相关产品推荐
相关产品推荐

