google-apps-script - 发送范围的电子邮件复制到电子邮件正文时,GoogleSheet 面临格式问题
问题描述
我正在处理粘贴在 Gmail 正文中的原子化电子邮件报告并发送电子邮件。一切正常,期望电子邮件正文上的格式显示如图 1 所示。
最后一列只是时间差,在 Google Sheet 上格式化为 Duration - HH:MM:SS
来自 Google 表格的实际图像 - 生成电子邮件的位置:
发送电子邮件和获取数据的脚本:
var stockData = getData();
var body = getEmailText(stockData);
var htmlBody = getEmailHtml(stockData);
MailApp.sendEmail({
to: "email@email.com",
subject: "Operations - Today's Job Details",
body: body,
htmlBody: htmlBody
});
}
function getEmailText(stockData) {
var text = "";
stockData.forEach(function(stock) {
text = text + stock.name + "\n" + stock.ticker + "\n" + stock.price + "\n-----------------------\n\n";
});
return text;
}
/**
* @OnlyCurrentDoc
*/
function getData() {
var values = SpreadsheetApp.getActive().getSheetByName("Email").getRange("Stocks").getValues();
values.shift(); //remove headers
var stocks = [];
values.forEach(function(value) {
var stock = {};
stock.sr = value[0];
stock.job = value[1];
stock.work = value[2];
stock.worked = value[3];
stock.time = value[4];
stocks.push(stock);
})
//Logger.log(JSON.stringify(stocks));
return stocks;
}
其次是Html代码:
<table cellspacing="0" cellpadding="0" dir="ltr" border="1" style="table-layout:fixed;font-size:10pt;font-family:Arial;width:0px;border-collapse:collapse;border:none">
<colgroup>
<col width="45">
<col width="588">
<col width="57">
<col width="90">
<col width="103">
</colgroup>
<tbody>
<tr style="height:21px">
<td style="overflow:hidden;padding:2px 3px;vertical-align:middle;background-color:rgb(252,229,205);font-weight:bold;text-align:center;border:1px solid rgb(204,204,204)">SR</td>
<td style="overflow:hidden;padding:2px 3px;vertical-align:middle;background-color:rgb(252,229,205);font-weight:bold;text-align:center;border:1px solid rgb(204,204,204)">JOB DETAIL</td>
<td style="overflow:hidden;padding:2px 3px;vertical-align:middle;background-color:rgb(252,229,205);font-weight:bold;text-align:center;border:1px solid rgb(204,204,204)">WORK TODAY?</td>
<td style="overflow:hidden;padding:2px 3px;vertical-align:middle;background-color:rgb(252,229,205);font-weight:bold;text-align:center;border:1px solid rgb(204,204,204)">WORKED X TIMES</td>
<td style="overflow:hidden;padding:2px 3px;vertical-align:middle;background-color:rgb(252,229,205);font-weight:bold;text-align:center;border:1px solid rgb(204,204,204)">TIME SPENT ON JOB</td>
</tr>
<? for(var i = 0; i < stocks.length; i++) { ?>
<tr style="height:21px">
<td style="overflow:hidden;padding:2px 3px;vertical-align:middle;text-align:center;border:1px solid rgb(204,204,204)"><?= stocks[i].sr ?></td>
<td style="overflow:hidden;padding:2px 3px;vertical-align:bottom;border:1px solid rgb(204,204,204)"><?= stocks[i].job ?></td>
<td style="overflow:hidden;padding:2px 3px;vertical-align:bottom;text-align:center;border:1px solid rgb(204,204,204)"><?= stocks[i].work ?></td>
<td style="overflow:hidden;padding:2px 3px;vertical-align:bottom;text-align:center;border:1px solid rgb(204,204,204)"><?= stocks[i].worked ?></td>
<td style="overflow:hidden;padding:2px 3px;vertical-align:bottom;text-align:center;border:1px solid rgb(204,204,204)"><?= stocks[i].time ?></td>
</tr>
<? } ?>
</tbody>
</table>
</div>
解决方案
改变:
var values = SpreadsheetApp.getActive().getSheetByName("Email").getRange("Stocks").getValues();
到:
var values = SpreadsheetApp.getActive().getSheetByName("Email").getRange("Stocks").getDisplayValues();
获取工作表中显示的日期。
推荐阅读
- json - 如何在 Dart Server 中为 request.response 设置内容类型?
- java - 如何将文本拆分成句子
- javascript - 从应用程序组件中清除/删除 Angular App 服务变量依赖项的使用
- reactjs - 反应物化芯片和图标
- angular - 使用角度将新对象添加到firebase
- port - Visual Studio 在通过串口从 Arduino 接收数据时冻结
- security - 在我的 Web 应用程序中阻止路由的最简单方法是什么?
- django - 如何在django数据库中保存对象
- android - 底部导航视图不显示图标或标题
- mysql - 从两个表中删除与相同两个表的另一个查询不匹配的 id 行