【问题标题】:How do I get the Formatted Value of a cell using Google Apps Script如何使用 Google Apps 脚本获取单元格的格式化值
【发布时间】:2021-02-21 07:47:28
【问题描述】:

我想使用 Google Apps 脚本通过连接来自 Google 电子表格中的选定单元格的值来创建一个字符串。问题是我不知道单元格是否包含数字、日期或文本。当值是数字或日期时,我想获取格式化的值,它在电子表格中的显示方式。

例如,这里有一个函数将返回一个命名范围的值。

function getValueByName() {
    var ss = SpreadsheetApp.getActiveSpreadsheet();
    var theRange = ss.getRangeByName("theNamedRange");
    return theRange.getValue();
}

如果命名范围包含格式为 11/6/2013 的日期,则此函数返回值为“Wed Nov 06 2013 01:00:00 GMT-0700 (MST)”。

我知道我想要的会导致十进制值的舍入错误,但在这种情况下我不在乎。我只想获取格式化后的值。

谢谢。

【问题讨论】:

    标签: google-apps-script


    【解决方案1】:

    您必须知道来自每个单元格的数据类型,并在每种情况下以正确的方式处理它...

    如果是字符串,请保持原样,如果是日期,请使用 Utilities.formatDate 以您想要的方式显示 (see doc here),如果是数字,您还可以根据需要使用 Utilities.formatString 对其进行格式化(see doc here)。

    要获取类型,请使用instanceof,例如查看at this recent post

    【讨论】:

    • 我是否理解没有办法简单地检索显示的单元格文本?这似乎令人难以置信。
    【解决方案2】:

    有一个库! SheetConverter library.

    要点here.

    以下是获取单个格式化单元格的方法:

    var formattedValue = SheetConverter.convertCell(value, format);
    

    您会发现其他好东西可以将整个范围转换为 HTML 表格,或为单个单元格生成 HTML(包括字体、背景颜色、文本颜色和大多数其他格式元素)。

    披露:我是图书馆作者。但这不是我在“ScriptExamples”网站上的照片!

    【讨论】:

      【解决方案3】:

      我相信现有的答案现在已经过时了,因为 getDisplayValue() 似乎是 OP 正在寻找的新功能。


      使用您的示例,我们可以得到一个范围(单元格)的格式化值,在本例中为 30%,如下所示:

      function getValueByName() {
        var ss = SpreadsheetApp.getActiveSpreadsheet();
        var theRange = ss.getRangeByName("A1Notation");
        var value = theRange.getValue() // 0.3
        var formattedValue = theRange.getDisplayValue(); // 30%
        return formattedValue;
      }
      

      这将返回范围内左上角单元格的显示值,如果范围只有一个值,则非常有用。使用getDisplayValues() 获得更大的范围。

      【讨论】:

        猜你喜欢
        • 2017-02-13
        • 1970-01-01
        • 2019-12-06
        • 2023-01-07
        • 2022-09-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多