【问题标题】:smartsheet API cell format of currency货币的 smartsheet API 单元格格式
【发布时间】:2019-09-18 02:11:53
【问题描述】:

我能够通过 API 和紧凑格式字符串 cell.format 成功格式化单元格,但具有货币格式的单元格除外。

我希望看到一个 cell.format 示例,该示例适用于提交 123456 作为值/显示值和一个 cell.format 字符串以使其显示为 $1,234.56

我最好的猜测是,根据我找到的薄文档,“,,,,,,,,,,,13,2,1,2,” 不清楚是否需要使用 decimalCount 字段如果设置了 numberFormat 则设置。无论哪种方式,我都未能成功地将值格式化为任何类似于美元的货币。

【问题讨论】:

    标签: format cell currency smartsheet-api


    【解决方案1】:

    我已经成功测试了您描述的场景如下:

    1. 获取包含具有我要格式化的数值的单元格的行(以便我可以检查该单元格中的初始值/格式,然后将其与更新单元格格式后返回的内容进行比较)。

    GET ROW(单元格格式更新之前)

    request URI: https://api.smartsheet.com/2.0/sheets/3826787173066628/rows/3277051783341956?include=format
    
    abbreviated response showing data for the cell I'm interested in:
    
    {
        "id": 3277051783341956,
        ...
        "cells": [
            ...
            {
                "columnId": 310981806057348,
                "value": 1234.56,
                "displayValue": "1234.56",
                "format": ",,1,,,,,,,22,,,,,,,"
            }
        ]
    }
    

    单元格值最初在 Smartsheet UI 中如下所示:

    1. 更新单元格的格式,将单元格值格式化为美国货币,带 2 位小数和逗号分隔符。

    更新行(单元格格式)

    request URI: https://api.smartsheet.com/2.0/sheets/3826787173066628/rows
    
    request body:
    
    [
        {
            "id": "3277051783341956", 
            "cells": [
                {"columnId": "310981806057348", "value": 1234.56, "format": ",,,,,,,,,,,13,2,1,2,,"}
            ]
        }
    ]
    
    1. 现在我已经更新了格式,再次检查单元格数据。

    GET ROW(单元格格式更新后)

    request URI: https://api.smartsheet.com/2.0/sheets/3826787173066628/rows/3277051783341956?include=format
    
    abbreviated response showing data for the cell I'm interested in:
    
    {
        "id": 3277051783341956,
        ...
        "cells": [
            ...
            {
                "columnId": 310981806057348,
                "value": 1234.56,
                "displayValue": "$1,234.56",
                "format": ",,,,,,,,,,,13,2,1,2,,"
            }
        ]
    }
    

    现在,Smartsheet UI 中的单元格值如下所示(根据需要):

    此示例验证用于您描述的场景的正确格式是:",,,,,,,,,,,13,2,1,2,,"

    还请注意,单元格的单元格 value 需要包含 2 个小数位 - 因此,如果您拥有的原始值是 123456 并且您希望该值在单元格中显示为 $1,234.56,那么您的集成需要将原始值除以 100 并将其设置为 Update Row (cell) 请求中的单元格值,以获得所需的结果。

    【讨论】:

    • 这很好地验证了我的怀疑;数字的格式对象与数字的实际“显示”无关。我认为有更深层次的含义,但似乎我们完全按照我们的需要设置了 displayValue。感谢大家的帮助
    【解决方案2】:

    您使用的格式字符串是正确的,但您使用的值是一个整数。这将被格式化为$123,456.00decimalCount 属性不会更改单元格的数值(移动小数点),而是设置显示小数点后的位数。

    请参阅API docs 了解可能的完整列表。或者,您可以在 Web 界面中设置单元格的格式,然后通过 API 检索格式以查看需要的正确字符串。

    如果您想更改单元格的数值,例如除以 100,您可以应用公式,或在代码内部更改值并将新值设置回单元格。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-07-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多