smartsheet API 货币单元格格式

smartsheet API cell format of currency

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

我想看一个 cell.format 的示例,该示例用于提交 123456 作为 value/display 值和一个 cell.format 字符串,使其显示为 $1,234.56

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

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

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

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

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

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

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": ",234.56",
            "format": ",,,,,,,,,,,13,2,1,2,,"
        }
    ]
}

Smartsheet 中的单元格值现在看起来像这样(根据需要)UI:

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

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