Power Automate:如何将表单响应转为字段名-字段值的键值对格式?
解决Power Automate表单响应字段ID转实际字段名的问题
操作步骤:
添加「获取表单详情」操作
- 在「获取响应详情」步骤之后,添加Microsoft Forms连接器下的「获取表单详情」。
- 表单ID直接选择触发器关联的表单ID,确保和触发流程的表单一致。
- 该操作会返回表单的
questions数组,每个元素包含字段的随机ID(id)和实际显示名称(title)。
生成字段ID与名称的映射对象
- 添加「选择」操作,输入内容选择「获取表单详情」输出中的
questions数组。 - 映射规则设置为:
- 键:
Key,值:item()?['id'] - 键:
Value,值:item()?['title']
- 键:
- 添加「Compose」操作,输入以下表达式将选择后的数组转换为ID-名称映射对象:
执行后会得到类似json(replace(replace(string(body('Select')), '"Key":', '"'), '"Value":', '')){"r92de569b263d4dd2856237db53eae005":"First Name", ...}的键值对对象。
- 添加「选择」操作,输入内容选择「获取表单详情」输出中的
转换响应数据为字段名-值的键值对
- 添加「选择」操作,输入内容选择「获取响应详情」的输出。如果响应包含
responseId、submitDate这类系统字段,可先通过「Filter数组」过滤掉,只保留以r开头的字段ID(Microsoft Forms的自定义字段ID均以r开头)。 - 映射规则设置为:
- 键:
variables('字段映射对象')[item()?['Key']](替换为你实际的Compose操作名称) - 值:
item()?['Value']
- 键:
- 这一步会把所有随机ID替换为对应的实际字段名,得到如
{"First Name":"张三", "Email":"zhangsan@example.com"}的格式。
- 添加「选择」操作,输入内容选择「获取响应详情」的输出。如果响应包含
生成HTML表格并发送邮件
- 将上一步「选择」操作的输出传入「创建HTML表格」,直接生成带实际字段名的表格。
- 在「发送邮件」操作中引用这个HTML表格即可。
额外提示:
- 如果需要保留提交时间、响应ID等系统字段,可在第三步的「选择」操作后手动添加映射,比如键设为「提交时间」,值选择「获取响应详情」里的
submitDate。 - 当表单新增/删除字段时,「获取表单详情」会自动拉取最新字段列表,流程无需手动修改即可适配变更。
内容的提问来源于stack exchange,提问作者RredCat
相关产品推荐
相关产品推荐

