如何向Logic App传递值数组?ADF FTP文件缺失告警邮件方案求助
解决方案:ADF遍历FTP文件生成告警邮件(For Each+变量追加方式)
一、文件存在性的比较条件
核心用contains()函数做匹配判断:
- 先通过Get Metadata活动获取FTP目录下的所有文件列表(勾选
Child Items选项) - For Each循环遍历你预先设定的4个目标文件数组
- 用以下表达式判断目标文件是否存在于FTP列表中:
表达式返回@contains(activity('Get Metadata').output.childItems, item())true时标记为Available,返回false时标记为Unavailable
二、完整实现步骤
- 创建目标文件数组变量
在ADF流水线里新建一个数组类型的变量targetFiles,填入要检查的4个文件名,示例值:["file1.csv", "file2.csv", "file3.csv", "file4.csv"] - 获取FTP文件列表
添加Get Metadata活动,连接到你的FTP数据源,勾选Child Items选项,获取当前FTP目录下的所有文件信息。 - 初始化邮件内容变量
新建一个字符串类型的变量emailContent,初始值设为邮件的HTML表头:"<table><tr><th>文件名</th><th>FTP中文件可用性</th></tr>" - 配置For Each循环追加内容
循环对象选择targetFiles数组,在循环内部添加Set Variable活动,用append模式给emailContent拼接行内容:@concat("<tr><td>", item(), "</td><td>", if(contains(activity('Get Metadata').output.childItems, item()), 'Available', 'Unavailable'), "</td></tr>") - 完成邮件HTML结构
循环结束后,再用Set Variable活动给emailContent追加"</table>",闭合表格结构。 - 调用Logic App发送邮件
添加Web活动,调用你的Logic App端点,把emailContent作为请求体参数传递过去。Logic App里配置发送邮件的动作,直接使用该参数作为邮件正文(需开启邮件的HTML渲染选项)。
三、关键注意点
- FTP服务器可能区分文件名大小写,要确保目标文件名和FTP上的文件名完全匹配
- 如果文件在FTP子目录下,要在Get Metadata里指定正确路径,同时目标文件名需带上对应路径前缀
- Logic App接收参数时要正确解析字符串类型的HTML内容,避免邮件显示乱码
内容的提问来源于stack exchange,提问作者Sivaani N
相关产品推荐
相关产品推荐

