如何在Teams聊天与Outlook邮件中动态插入含JSON数据的表格
Power BI审核流程:Teams自适应卡片与Outlook HTML动态表格实现方案
核心结论
无法直接共用同一模板——Teams自适应卡片(Adaptive Card)与Outlook HTML的语法体系完全不同,但可以基于同一个数据源(Non-EmptyReports数组),通过Power Automate的内置操作分别生成符合要求的内容。
第一步:统一数据源格式
当前Non-EmptyReports的结构是单个对象包含多个键值对(PBIReport1、PBIReport2...),需要先转成可遍历的标准数组(每个元素包含报告名称和URL):
- 添加Compose操作,输入表达式将原始对象转成XML后提取节点:
xpath(xml(json(concat('{"root":', string(variables('Non-EmptyReports')[0]), '}'))), '/root/*') - 添加Select操作,基于上述Compose结果生成标准数组:
- From:选择上一步的Compose输出
- Map:
reportName:xpath(item(), 'name(.)')reportUrl:xpath(item(), 'text(.)')
最终得到的数组结构如下:
[ {"reportName": "PBIReport1", "reportUrl": "https://xxx"}, {"reportName": "PBIReport2", "reportUrl": "https://xxx"} ]
第二步:Teams自适应卡片动态表格实现
- 创建数组变量(如
AdaptiveCardRows),用于存储生成的表格行 - 添加Apply to each操作,遍历第一步生成的标准数组:
- 在循环内添加Compose操作,生成单一行的自适应卡片模板:
{ "type": "TableRow", "cells": [ { "type": "TableCell", "items": [ { "type": "ActionSet", "actions": [ { "type": "Action.OpenUrl", "title": "@{item()?['reportName']}", "url": "@{item()?['reportUrl']}" } ] } ] } ] } - 将Compose结果追加到
AdaptiveCardRows变量中
- 在循环内添加Compose操作,生成单一行的自适应卡片模板:
- 发送Teams消息时,插入完整的自适应卡片:
{ "type": "AdaptiveCard", "$schema": "http://adaptivecards.io/schemas/adaptive-card.json", "version": "1.4", "body": [ { "type": "TextBlock", "text": "Power BI报告审核请求", "size": "Large", "weight": "Bolder" }, { "type": "Table", "columns": [ { "width": "auto", "header": { "type": "TableCell", "items": [{"type": "TextBlock", "text": "报告名称", "weight": "Bolder"}] } } ], "rows": @{variables('AdaptiveCardRows')} } ] }
第三步:Outlook HTML动态表格实现
- 添加Select操作,遍历第一步生成的标准数组,生成HTML行:
- From:标准数组
- Map:
replace(replace('<tr><td><a href="{url}">{name}</a></td></tr>', '{name}', item()?['reportName']), '{url}', item()?['reportUrl'])
- 添加Join操作,将所有HTML行拼接为字符串(分隔符留空)
- 发送Outlook邮件时,在HTML正文中插入拼接后的内容:
<h3>Power BI报告审核请求</h3> <table border="1" cellpadding="5" cellspacing="0"> <tr><th><b>报告名称</b></th></tr> @{outputs('Join_HTML_Rows')} </table>
关键注意事项
- 空值处理:添加条件判断,若标准数组为空,则在卡片/邮件中显示「无提交的Power BI报告」
- Adaptive Card版本:必须使用1.4及以上版本,否则不支持
Table元素 - 链接兼容性:确保Power BI报告URL有权限,审核者可直接访问
内容的提问来源于stack exchange,提问作者swolfe2
相关产品推荐
相关产品推荐

