保留显示的格式时,我如何通过电子邮件发送特定范围的单元格?

时间:2019-06-01 08:42:55

标签: google-apps-script google-sheets

我正在尝试以电子邮件形式导出特定范围的单元格。单元格以某种方式进行格式化,并具有与颜色编码相关的条件格式。

这是我的演示页:https://docs.google.com/spreadsheets/d/1ibB87Vhz7wTjKrIrasYSRLoAiadQHtNqqmyl-xywtOI/edit?usp=sharing

我已经成功发送了电子邮件,但是我无法弄清楚如何使用相关的格式,条件格式,字体,边框等。

当前,它正在使用displayValues,并用逗号将其列出。我还希望摆脱昏迷,如果可能的话,将范围限制为只有数据在该范围内的单元格。

这就是我所拥有的:

    function sendReport(){
      var incidents = SpreadsheetApp.getActiveSheet().getRange(2,1,4,1).getDisplayValues();
      var subjectRange = SpreadsheetApp.getActiveSheet().getRange("A1");
      var subjectCell = subjectRange.getValues();
      for (i in subjectCell) {
        var rowData = subjectCell[i];
        var subject = rowData [0];
      }
      MailApp.sendEmail("emailaddress@domain.com",
                subject,
                incidents);
    }

1 个答案:

答案 0 :(得分:0)

那是因为您实际上是在电子邮件中发送Array(因为getValues()返回二维Array)。如果要保持格式,则应通过对该数组进行迭代来构造一个html表,然后通过options中的htmlBody属性将结果附加到电子邮件正文中。

看看documentation,了解有关如何从Range获取样式的详细信息。您必须将每个样式映射到要格式化的style=""的{​​{1}}属性中,这样(以节省资源,批量样式化并包含在HtmlElement循环中):< / p>

  1. Array-getFontColors()(如果适用,则适用于color:{method result});
  2. HtmlTableElement-getFontFamilies();
  3. ...等等...

或仅使用font-family:{method result}批量获取所有样式,并使用appropriate methods访问单个样式属性(请注意,您仍然需要使用getTextStyles()方法访问背景颜色,使用{{ 1}}等。