Power App调用Power Automate Flow数据解析及更新需求求助
问题背景
我每半年给员工发周期性调研,现在用MS Form,打算换成Power App,核心需求:
- 员工能看、改自己的历史回复
- 绝对不能让用户碰到底层的SharePoint列表/Excel文件,也看不到别人的回复
已经搭了个拉取数据的Flow,逻辑是:
- Power App调用这个Flow(V2版本)
- 按用户邮箱筛选SharePoint里的对应列表项
- 生成键值对
- 转成字符串返回给Power App
现在卡两个点:
- Power App里没法把返回的字符串拆成对应字段用
- 还得做第二个Flow,用来接收Power App里用户改的内容,更新到数据源里
一、解决字符串解析问题
最优方案:让Flow直接返回JSON对象(不用折腾字符串)
别返回纯字符串了,改成JSON格式,Power Apps能直接用:
- Flow里做完「生成键值对」后,加个「Compose」动作,把键值对转成JSON结构(比如直接写
{"问题1":"@{outputs('生成键值对')?['问题1']}","问题2":"@{outputs('生成键值对')?['问题2']}"},或者用json()函数转换) - 把Flow的返回类型设成「JSON对象」(在Flow的响应步骤里选择对应类型)
- Power App里调用Flow后,直接用
Flow名称.Run(User().Email).返回的对象名拿到数据,然后用.取字段,比如返回结果.调研问题1
要是必须用字符串返回的应急方法
如果Flow已经返回的是类似{"问题1":"答案1","问题2":"答案2"}的字符串,在Power Apps里用ParseJSON()解析:
Set( 用户历史回复, ParseJSON(拉取数据Flow.Run(User().Email).输出字符串) )
之后取字段的时候,根据类型转一下:文本用Text(用户历史回复.问题1),数字用Value(用户历史回复.问题2),布尔值用Boolean(用户历史回复.问题3)
二、做更新数据的Flow
Flow步骤一步步来
- 触发方式:选「Power Apps(V2)」当触发器
- 加输入参数:把需要更新的字段都加上,比如必填的「用户邮箱」(用来找要更新的列表项)、「问题1答案」「问题2答案」这些
- 筛选要更新的项:加「获取项目」动作,筛选条件写
Email eq '@{triggerBody()['用户邮箱']}'(前提是SharePoint列表里存了用户邮箱字段) - 更新列表项:加「更新项目」动作,选对应的SharePoint列表,把列表项ID设成「获取项目」返回的第一个项的ID,然后把每个输入参数对应到列表的字段上
- 给Power App回消息:加「响应」动作,返回个成功/失败的状态,比如
{"状态":"更新成功"}
Power App里调用更新Flow的写法
在保存按钮的OnSelect里加公式:
更新数据Flow.Run( User().Email, 文本输入框1.Text, 下拉框1.Selected.Value // 其他调研字段按顺序传进去 )
内容的提问来源于stack exchange,提问作者sampak
相关产品推荐
相关产品推荐

