如何在Power Automate自适应卡片中用动态数组生成Input.ChoiceSet
动态生成Adaptive Cards的Input.ChoiceSet选项
核心思路
把从SharePoint获取的用户数组,转换成Adaptive Cards要求的choices格式数组(每个元素包含title和value字段),再替换硬编码的choices部分即可。
步骤1:转换用户数组为ChoiceSet格式
根据你提供的用户数组,提取每个用户的displayName作为title,mail作为value。以下是不同开发环境的实现示例:
JavaScript/TypeScript示例
// 从SharePoint获取的用户数组 const users = [ { "@odata.type": "#microsoft.graph.user", "id": "a9b4ab8dfd78", "displayName": "Paul Smith", "mail": "Paul@mail.com" }, { "@odata.type": "#microsoft.graph.user", "id": "b94bbcb08f", "displayName": "Mike Jones", "mail": "Mike@mail.com" }, { "@odata.type": "#microsoft.graph.user", "id": "96d9c39e6b", "displayName": "Todd Neal", "mail": "Todd@mail.com" } ]; // 转换为ChoiceSet需要的格式 const choiceSetOptions = users.map(user => ({ title: user.displayName, value: user.mail }));
Power Automate示例
使用选择操作,设置映射字段:
title:选择用户数组中的displayNamevalue:选择用户数组中的mail
步骤2:替换硬编码的choices部分
将转换后的数组替换到Adaptive Card的Input.ChoiceSet的choices字段中。最终卡片JSON示例:
"actions": [ { "type": "Action.ShowCard", "title": "分配请求", "card": { "type": "AdaptiveCard", "body": [ { "type": "Input.ChoiceSet", "id": "AssignedMember", "choices": [], // 此处填入转换后的动态数组 "errorMessage": "这是必填项", "placeholder": "请选择", "isRequired": true } ], "actions": [ { "type": "Action.Submit", "title": "确定" } ], "$schema": "http://adaptivecards.io/schemas/adaptive-card.json" } } ]
注意事项
- 确保用户数组中的
mail字段不为空,避免生成无效选项值 - 其他开发环境(如C#)的转换逻辑类似:遍历数组,提取对应字段构造新数组即可
内容的提问来源于stack exchange,提问作者VtecPanda
相关产品推荐
相关产品推荐

