如何通过API读取或更新ACC表单中的自定义表格数据?
解决ACC自定义表格API操作问题
问题根源
ACC的tabularValues接口仅支持操作内置的三个表格(worklogEntries、materialsEntries、equipmentEntries),自定义表格的处理逻辑与内置表完全不同,无法复用该接口,这就是你收到Must be one of: worklogEntries, materialsEntries, equipmentEntries错误的原因。
正确操作步骤
1. 获取自定义表格的内部字段结构
因为GET表单接口不会在tabularData中返回自定义表格信息,你需要调用表单模板查询API(如GET /forms/templates/{你的表单模板ID}),在返回结果的sections数组中找到自定义表格对应的板块:
- 找到自定义表格的内部字段名(通常是类似
custom_table_xxxx的格式,而非你手动命名的billingdetailEntries) - 记录表格每一列对应的
fieldId(不是显示的列名,比如custom_billingdate而非billingdate)
2. 更新自定义表格数据的正确请求格式
自定义表格的数据需要作为表单的普通字段值提交,放在values字段下,而非tabularValues。示例请求体:
{ "values": { "custom_billingdetail": [ // 这里是模板中拿到的自定义表格内部字段名 { "id": "aaaaaaaaaaa", // 仅更新已有行时需要,新增行可省略 "custom_billingdate": "2025-01-01", // 模板中拿到的列fieldId "custom_maximoreference": "W1234567", "custom_billamount": 100 } ] } }
3. 验证数据提交结果
提交PUT请求后,再次调用GET表单接口,自定义表格的数据会出现在values字段下对应的数组中,而非tabularData,这是ACC自定义表格的正常返回逻辑。
关键注意事项
- 绝对不要使用自定义表格的显示名称作为接口参数,必须使用模板返回的内部字段标识
- 自定义表格的列参数必须用模板中的
fieldId,不能用界面上的显示列名 - 内置表与自定义表的API操作逻辑完全隔离,不存在通用的表格操作接口
内容的提问来源于stack exchange,提问作者Jack Capel
相关产品推荐
相关产品推荐

