Power Automate处理含斜杠字段的JSON错误解决咨询
Smartsheet同步Excel:Power Automate处理带斜杠字段的解决方案
问题背景
在Smartsheet数据同步至Excel的Power Automate流程中,遇到字段名Tier 2/3 Fire Threat Area含斜杠的兼容性问题:
- 初始使用表达式:
if(contains(items('Apply_to_each'),'Tier 2/3 Fire Threat Area'),items('Apply_to_each')?['Tier 2/3 Fire Threat Area'],'') - 触发错误:
Flow save failed with code 'WorkflowOperationParametersExtraParameter' and message 'The API operation does not contain a definition for parameter 'item/Tier 2.3 Fire Threat Area'.'.
已尝试双斜杠转义、引号包裹斜杠的表达式,均无效,且因业务要求无法修改Smartsheet和Excel的原字段名。
可行解决方案
1. 用XPath直接提取字段值
Power Automate的XPath支持处理含特殊字符的字段,无需修改原字段名。将当前项转为XML后,用转义后的字段名提取值:
xpath(xml(json(concat('{"root":', items('Apply_to_each'), '}'))), 'string(/root/Tier_x0020_2_x002F_3_x0020_Fire_x0020_Threat_x0020_Area)')
- 转义规则:空格对应
x0020,斜杠/对应x002F,按原字段名的字符依次替换即可; - 若字段不存在,自动返回空字符串,无需额外判断。
2. 解析JSON替换字段名后取值
先将当前项转为JSON字符串,替换斜杠为无特殊字符的标识,再解析为对象取值:
json(replace(string(items('Apply_to_each')), '"Tier 2/3 Fire Threat Area":', '"Tier 2-3 Fire Threat Area":'))?['Tier 2-3 Fire Threat Area']
写入Excel时,将目标字段名改回Tier 2/3 Fire Threat Area即可保持名称一致。
3. 用Select操作映射临时字段
针对仅3列特殊字段的场景,可在Apply to each前添加Select操作:
- 设置源字段为
Tier 2/3 Fire Threat Area,目标字段命名为无特殊字符的临时名称(如Tier23FireThreatArea); - 后续流程使用临时名称取值,写入Excel时再映射回原字段名。
这种方法无需编写复杂表达式,操作直观。
内容的提问来源于stack exchange,提问作者Nathaniel Petterson
相关产品推荐
相关产品推荐

