【问题标题】:How can I email a specific range of cells while KEEPING the displayed formatting?如何在保持显示格式的同时通过电子邮件发送特定范围的单元格?
【发布时间】:2019-06-01 20:09:58
【问题描述】:

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

这是我的演示表: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);
    }

【问题讨论】:

    标签: google-apps-script google-sheets


    【解决方案1】:

    这是因为您实际上是在电子邮件中发送Array(因为getValues() 返回二维Array)。如果你想保持格式,你应该通过迭代这个数组来构造一个 html 表,并通过选项中的htmlBody 属性将结果附加到电子邮件正文。

    查看documentation,了解有关如何从Range 获取样式的详细信息。您必须将每个样式映射到您想要格式化的HtmlElements 的style="" 属性中,就像这样(为了节省资源,批量获取样式并包含到Array 循环中):

    1. getFontColors() - color:{method result}(如果有,请向HtmlTableElement申请);
    2. getFontFamilies() - font-family:{method result};
    3. ...等等...

    或者简单地使用getTextStyles() 批量获取所有样式并使用appropriate methods 访问单个样式属性(请注意,您仍然需要使用getBackgrounds() 方法访问背景颜色,使用getHeight() 等方法访问高度)。

    【讨论】:

    • 于是我在网上找到了这个脚本,并针对我的数据进行了调整。但是,我无法弄清楚如何使用 getBackgrounds 或 getTextStyles 将我的单元格格式归因于脚本中的 html 表格格式......非常感谢任何帮助。
    • Tom,我认为库版本有效吗?看看它的source code——它创建了与我解释过的原理相同的速记方法(如果你不想详细了解它的工作原理,你可以随时使用库本身)通过连接字符串与@ 987654341@属性规则
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-08
    • 1970-01-01
    • 1970-01-01
    • 2016-07-31
    相关资源
    最近更新 更多