如何通过Cloud Flow/Power Automate为Power Apps自定义表EmpCity添加Choice选项
用Power Automate批量添加Choice选项到Power Apps自定义表
步骤1:触发Flow并拉取API数据
- 选择合适触发器(比如手动触发,或定时触发用于定期同步)
- 添加「HTTP」动作,请求方法设为
GET,填入目标API地址,获取返回的城市JSON数据。
步骤2:解析JSON数据
- 添加「Parse JSON」动作,将HTTP动作的输出作为输入,点击「生成示例有效负载」,粘贴API返回的JSON示例自动生成Schema,确保能正确解析出每个城市的名称(及唯一标识如城市编码)。
步骤3:通过Dataverse操作批量添加选项
Choice字段的选项存储在Dataverse的Choices(逻辑名称choices)和Choice Options(逻辑名称choiceoptions)表,需通过Dataverse动作完成操作:
- 获取目标EmpCity字段对应的Choice集ID:
添加「Dataverse - 列出行」动作,表选择「Choices」,筛选条件设为DisplayName eq 'EmpCity',提取返回结果中的choiceid。 - 遍历城市数据添加选项:
添加「Apply to each」循环,选择解析后的城市数组作为循环对象。
循环内添加「Dataverse - 添加行」动作,表选择「Choice Options」,填写必填字段:Choice:选择上一步获取的choiceidLabel:当前循环的城市名称Value:设置唯一数值(如城市编码,或用循环索引+1保证唯一)Is Active:设为Yes
关键注意事项
- 确保Flow使用的账号拥有Dataverse系统管理员或自定义实体编辑器权限,具备修改Choice选项的权限。
- 若API返回重复城市,建议在循环前添加去重逻辑,避免重复选项。
- 如需覆盖原有选项,可先添加「Dataverse - 删除行」动作,清除该Choice集下的所有旧选项后再批量添加新数据。
替代方案(Power Automate受限时)
方案1:PowerShell脚本调用Dataverse Web API
编写脚本批量创建选项,示例如下:
# 配置参数 $tenantId = "你的租户ID" $clientId = "你的应用注册ID" $clientSecret = "你的应用密钥" $dataverseUrl = "你的Dataverse环境URL" $choiceName = "EmpCity" $apiUrl = "https://myclient.com/b2bapi/options/city" # 获取城市数据 $cities = Invoke-RestMethod -Uri $apiUrl -Method Get # 获取访问令牌及Choice集ID $token = (Invoke-RestMethod -Uri "https://login.microsoftonline.com/$tenantId/oauth2/v2.0/token" -Method Post -Body @{ client_id = $clientId client_secret = $clientSecret grant_type = "client_credentials" scope = "$dataverseUrl/.default" }).access_token $choiceId = (Invoke-RestMethod -Uri "$dataverseUrl/api/data/v9.2/choices?`$filter=DisplayName eq '$choiceName'" -Method Get -Headers @{Authorization = "Bearer $token"}).value[0].choiceid # 批量添加选项 foreach ($city in $cities) { $body = @{ choiceid = $choiceId label = $city.name value = $city.code # 或自定义唯一数值 isactive = $true } | ConvertTo-Json Invoke-RestMethod -Uri "$dataverseUrl/api/data/v9.2/choiceoptions" -Method Post -Headers @{Authorization = "Bearer $token"; "Content-Type" = "application/json"} -Body $body }
方案2:Dataverse插件
编写C#插件,在插件逻辑中调用外部API获取城市数据,通过Dataverse服务上下文批量创建Choice选项,将插件注册为定时执行的步骤,实现自动同步。
内容的提问来源于stack exchange,提问作者Aiden Martin
相关产品推荐
相关产品推荐

