You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Teams聊天与Outlook邮件中动态插入含JSON数据的表格

Power BI审核流程:Teams自适应卡片与Outlook HTML动态表格实现方案

核心结论

无法直接共用同一模板——Teams自适应卡片(Adaptive Card)与Outlook HTML的语法体系完全不同,但可以基于同一个数据源(Non-EmptyReports数组),通过Power Automate的内置操作分别生成符合要求的内容。


第一步:统一数据源格式

当前Non-EmptyReports的结构是单个对象包含多个键值对(PBIReport1、PBIReport2...),需要先转成可遍历的标准数组(每个元素包含报告名称和URL):

  1. 添加Compose操作,输入表达式将原始对象转成XML后提取节点:
    xpath(xml(json(concat('{"root":', string(variables('Non-EmptyReports')[0]), '}'))), '/root/*')
    
  2. 添加Select操作,基于上述Compose结果生成标准数组:
    • From:选择上一步的Compose输出
    • Map:
      • reportName:xpath(item(), 'name(.)')
      • reportUrl:xpath(item(), 'text(.)')

最终得到的数组结构如下:

[
  {"reportName": "PBIReport1", "reportUrl": "https://xxx"},
  {"reportName": "PBIReport2", "reportUrl": "https://xxx"}
]

第二步:Teams自适应卡片动态表格实现

  1. 创建数组变量(如AdaptiveCardRows),用于存储生成的表格行
  2. 添加Apply to each操作,遍历第一步生成的标准数组:
    • 在循环内添加Compose操作,生成单一行的自适应卡片模板:
      {
        "type": "TableRow",
        "cells": [
          {
            "type": "TableCell",
            "items": [
              {
                "type": "ActionSet",
                "actions": [
                  {
                    "type": "Action.OpenUrl",
                    "title": "@{item()?['reportName']}",
                    "url": "@{item()?['reportUrl']}"
                  }
                ]
              }
            ]
          }
        ]
      }
      
    • 将Compose结果追加到AdaptiveCardRows变量中
  3. 发送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动态表格实现

  1. 添加Select操作,遍历第一步生成的标准数组,生成HTML行:
    • From:标准数组
    • Map:
      replace(replace('<tr><td><a href="{url}">{name}</a></td></tr>', '{name}', item()?['reportName']), '{url}', item()?['reportUrl'])
      
  2. 添加Join操作,将所有HTML行拼接为字符串(分隔符留空)
  3. 发送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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 01:26:14