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

Logic Apps中如何通过HTTP请求体动态定义CSV表结构并获取项值?

Logic App动态定义列映射并生成CSV的解决方案

问题场景

通过Logic App实现从指定SharePoint站点列表获取数据,将内容导出为CSV存入Blob存储;其中站点名称、列表名称、列映射规则均通过HTTP请求体动态传入。请求体结构如下:

{
"listName" : "The list name",
"siteAddress" : "SharepointSiteAddress",  
"columns" : {  
"Email": " @item()?['Employee']?['Email']",
"Region": " @item()?['Region']?['Value']"
}
}

直接将columns字段传入Select操作的Map时,输出结果中列值为传入的表达式字符串,而非SharePoint列表项的实际值。

核心原因

Logic App会将请求体中的表达式字符串视为纯文本,不会自动解析执行表达式逻辑,因此无法获取到列表项的真实数据。

解决方案

步骤1:解析HTTP请求体

添加Parse JSON操作,输入为HTTP请求的body,使用以下Schema确保columns字段被正确解析:

{
    "type": "object",
    "properties": {
        "listName": {
            "type": "string"
        },
        "siteAddress": {
            "type": "string"
        },
        "columns": {
            "type": "object",
            "additionalProperties": {
                "type": "string"
            }
        }
    }
}

步骤2:动态解析表达式并生成映射(二选一)

方法一:消耗型计划专用(使用evaluate()函数)

在获取SharePoint列表项的操作后,添加Select操作:

  1. From选择SharePoint返回的列表项,表达式为body('Get_items')?['value']
  2. 切换Map到文本模式(点击右上角</>图标),输入以下表达式:
@{
  let columnMap = body('Parse_JSON')?['columns'];
  createObject(
    foreach(keys(columnMap), 
      (colName) => {
        return {
          "key": colName,
          "value": evaluate(replace(columnMap[colName], '@item()', 'item'))
        }
      }
    )
  )
}

该表达式会遍历所有传入的列映射,通过evaluate()函数解析表达式字符串,并将@item()替换为Select循环中的当前项item,从而获取真实值。

方法二:全计划通用(使用Liquid模板)

  1. 添加Compose操作,输入以下内容,将列表项和列映射组合为一个对象:
{
  "items": @body('Get_items')?['value'],
  "columns": @body('Parse_JSON')?['columns']
}
  1. 添加Transform JSON to JSON操作,选择Liquid模板,模板内容如下:
[
  {% for item in items %}
    {
      {% for colName, expr in columns %}
        "{{ colName }}": {{ expr | replace: "@item()", "item" }}
        {% if forloop.last == false %},{% endif %}
      {% endfor %}
    }
    {% if forloop.last == false %},{% endif %}
  {% endfor %}
]

模板会遍历每个列表项,将表达式中的@item()替换为Liquid变量item,解析后生成包含真实值的对象数组。

步骤3:生成CSV并保存到Blob

将上述步骤的输出(Select或Liquid转换后的结果)传入Create CSV table操作,再将生成的CSV内容传入Create blob操作,指定Blob存储路径完成保存。

内容的提问来源于stack exchange,提问作者panikkos

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 13:45:29