Azure Logic App:如何将JSON转为CSV并作为邮件附件发送
Azure Logic App如何直接生成临时CSV作为邮件附件,无需存储?
问题描述
我的Azure Logic App接收如下格式的JSON数据:
{ "id": "123", "Email": "test@test.com", "Name": "Test Test", "Message": [ { "Num": "123", "Flag": "A", "Value": "US" }, { "Num": "123", "Flag": "A", "Value": "CA" } ] }
使用「Create CSV table」操作处理数据时过程正常,但将其输出作为邮件附件时,显示的是原始JSON内容而非CSV文件。
核心需求:
- 生成可作为邮件附件的CSV文档
- 能否创建无需存储的临时CSV直接发送
尝试过SharePoint和Excel Online的「Create File」操作,但遇到权限问题,希望规避这类方式,同时想确认:是否需要在后端生成CSV后再传给Logic App?
解决方案
无需存储,直接在Logic App内生成CSV附件
完全不需要依赖外部存储或后端提前生成,按以下步骤操作即可:
正确配置「Create CSV table」操作
- 数据源选择触发JSON中的
Message数组(这是需要转换为CSV的结构化数据集合) - 配置列映射(可自动检测或手动指定
Num、Flag、Value为CSV列)
- 数据源选择触发JSON中的
提取纯CSV文本(可选但推荐)
添加一个「Compose」操作,使用表达式提取CSV table的纯文本内容:body('Create_CSV_table')?['body']注:「Create CSV table」的输出是包含
body属性的JSON对象,直接引用会把整个JSON作为附件内容,提取body值才能得到纯CSV文本。配置邮件附件
在发送邮件的操作(比如Office 365 Outlook的「Send an email (V2)」)中,添加附件时:- 附件名称:输入自定义名称,比如
message_data.csv - 附件内容:选择「Compose」操作的输出(或直接写入上述表达式)
- 附件类型:设置为
text/csv
- 附件名称:输入自定义名称,比如
简化步骤(跳过Compose)
如果不想添加额外的Compose操作,可直接在邮件附件的「内容」字段中写入表达式body('Create_CSV_table')?['body'],同时指定附件类型为text/csv,效果完全一致。
结论
不需要在后端提前生成CSV,Azure Logic App本身就可以完成临时CSV的生成并直接作为邮件附件发送,全程无需依赖任何存储服务,完美规避权限问题。
内容的提问来源于stack exchange,提问作者Ganzatron
相关产品推荐
相关产品推荐

