2

我需要创建一个与 MS Excel 中的“复制为图片”选项执行相同操作的脚本。我需要将位于 Google 表格中的某些表格复制为图片并粘贴到电子邮件 (Gmail) 中。我找到了一个可以将图表转换为图片并通过邮件发送的代码,但我还没有找到复制表格并将其粘贴为图片的代码。我想将表格粘贴为图片的原因是为了保持表格的格式,因为我知道用 HTML 构建它不允许我保留 HTML 缺乏的条件格式和其他功能。

其他论坛中的人建议使用 Sheets to Slides 脚本,获取表格数据所在的 Range,然后将其发送到 Google Slides。然后,在幻灯片中,将幻灯片下载为每张幻灯片的 .jpeg/.png 文件,然后将其添加到电子邮件正文中。我也不知道该怎么做。

4

1 回答 1

5

您可以尝试在 HTML 中复制表格以及条件格式。

function drawTable() {
    var ss_data = getData();
    var data = ss_data[0];
    var background = ss_data[1];
    var fontColor = ss_data[2];
    var fontStyles = ss_data[3];
    var fontWeight = ss_data[4];
    var fontSize = ss_data[5];
    var html = "<table border='1'>";
    for (var i = 0; i < data.length; i++) {
        html += "<tr>"
        for (var j = 0; j < data[i].length; j++) {
            html += "<td style='height:20px;background:" + background[i][j] + ";color:" + fontColor[i][j] + ";font-style:" + fontStyles[i][j] + ";font-weight:" + fontWeight[i][j] + ";font-size:" + (fontSize[i][j] + 6) + "px;'>" + data[i][j] + "</td>";
        }
        html += "</tr>";
    }
    html + "</table>"
    MailApp.sendEmail({
        to: Session.getActiveUser().getEmail(),
        subject: "Spreadsheet Range",
        htmlBody: html
    })
}


function getData(){
  var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Raw").getDataRange();
  var background = ss.getBackgrounds();
  var val = ss.getDisplayValues();
  var fontColor = ss.getFontColors();
  var fontStyles = ss.getFontStyles();
  var fontWeight = ss.getFontWeights();
  var fontSize = ss.getFontSizes();
  return [val,background,fontColor,fontStyles,fontWeight,fontSize];
}
于 2017-12-15T12:17:20.557 回答