我有一个进程可以读取存储在 smartsheet 中的映射配置。这是流程管理员可以控制数据流的地方。最终,这将存储在雪花表中以供其他 Talend 流使用。
我已经把它带到了这一点,其中包括获取更新的名称格式化列和工作表。
我现在的目标是创建 JSON 以将新行添加到 Smartsheet 并更新现有行。这两个调用的唯一区别是在 Smartsheet 中包含行 ID。
对于此示例,我将重点放在新行上。我相信我可以调整任何解决新行以更新现有行的解决方案,因为它只涉及一个 JSON 属性。
我很难理解 Smartsheet 在 JSON 响应中存储行和列的独特方式。
每行都是单元格的集合。每个单元格都是属性的集合,其中包括单元格所属的列 ID。
这是我目前所拥有的
从缓存读取的表中要转换为 JSON 的数据(tHashOutput 和 tHashInput 通过几个步骤解决其他要求)
LOADED_DATE_TIME_STR | SSHEET_NAME | SSHEET_ID | SSHEET_ROW_ID | SSHEET_COL_ID | SSHEET_COL_NAME | DB_TBL_NAME | DB_COL_NAME |
---|---|---|---|---|---|---|---|
20220221232059 | sheet_name_1_str | sheet_id_1_int | 无效的 | xxxxxxxxxxxxxxx1 | sheet_1_col_name_a_str | 无效的 | 无效的 |
20220221232059 | sheet_name_2_str | sheet_id_2_int | 无效的 | xxxxxxxxxxxxxxx2 | sheet_2_col_name_b_str | 无效的 | 无效的 |
20220221232059 | sheet_name_2_str | sheet_id_2_int | 无效的 | xxxxxxxxxxxxxxx3 | sheet_2_col_name_c_str | 无效的 | 无效的 |
映射配置表有 5 个重要的列,我尚未将它们的映射和 ID 合并到流程中。一旦我知道这部分流程的去向,我就会这样做
- LOADED_DATE_TIME_STR = col_id_1_int
- SSHEET_NAME = col_id_2_int
- SSHEET_ID = col_id_3_int
- SSHEET_COL_ID = col_id_4_int
- SSHEET_COL_NAME = col_id_6_int
输出 json 格式:(这将是较大 JSON 树的子元素)。具体来说,每个单元格数组定义一行,并将成为 Smartsheet API 结构中该行的子元素
{
"cells": [
{
"columnId": col_id_1_int,
"value": "20220221232059"
},
{
"columnId": col_id_2_int,
"value": "sheet_name_1_str"
},
{
"columnId": col_id_3_int,
"value": "sheet_id_1_int"
}
{
"columnId": col_id_4_int,
"value": "xxxxxxxxxxxxxxx1"
}
{
"columnId": col_id_6_int,
"value": "sheet_1_col_name_a_str"
}
]
},
{
"cells": [
{
"columnId": col_id_1_int,
"value": "20220221232059"
},
{
"columnId": col_id_2_int,
"value": "sheet_name_2_str"
},
{
"columnId": col_id_3_int,
"value": "sheet_id_2_int"
}
{
"columnId": col_id_4_int,
"value": "xxxxxxxxxxxxxxx2"
}
{
"columnId": col_id_6_int,
"value": "sheet_2_col_name_b_str"
}
]
},
...