首页 > 解决方案 > 发送范围的电子邮件复制到电子邮件正文时,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>

标签: google-apps-scriptgoogle-sheets

解决方案


改变:

var values = SpreadsheetApp.getActive().getSheetByName("Email").getRange("Stocks").getValues();

到:

var values = SpreadsheetApp.getActive().getSheetByName("Email").getRange("Stocks").getDisplayValues();

获取工作表中显示的日期。


推荐阅读