如何在Power Automate中移除Apply to Each,仅发送单封删除文件汇总邮件
Power Automate 处理OneDrive旧文件删除+单封汇总邮件解决方案
以下是针对OneDrive场景的具体配置步骤,解决多封邮件和无删除也发邮件的问题:
1. 初始化字符串变量
- 新增
Initialize variable操作:- 名称:比如
已删除文件列表 - 类型:
String - 初始值:留空(不填任何内容)
- 名称:比如
2. 筛选OneDrive中超过7天的文件
- 先添加
List files in folder(OneDrive连接器),选择目标文件夹路径 - 新增
Filter array操作,数据源选择上一步List files in folder的输出(动态内容里的value) - 设置筛选条件:
- 左侧选择动态内容里的
Last modified(OneDrive文件的修改时间字段) - 运算符选
is less than - 右侧输入表达式:
addDays(utcNow(), -7)(计算当前时间往前推7天的时间点)
- 左侧选择动态内容里的
3. 判断是否存在待删除文件
- 新增
Condition操作:- 左侧输入表达式:
length(body('Filter_array'))(获取筛选后文件数组的长度) - 运算符选
is greater than - 右侧输入
0
- 左侧输入表达式:
- 此步骤确保只有当存在旧文件时,才执行后续删除和邮件操作
4. 循环删除文件并汇总文件名
- 在Condition的Yes分支下,添加
Apply to each操作,数据源选择Filter array的输出 - 在循环内依次添加两个操作:
Delete file(OneDrive连接器),文件标识符选择循环项的Id(动态内容里的Id)Append to string variable:- 变量名称选择之前初始化的
已删除文件列表 - 值输入表达式:
variables('已删除文件列表') + items('Apply_to_each')?['Name'] + decodeUriComponent('%0A') - (注:
decodeUriComponent('%0A')用于在文件名间添加换行,让邮件列表更清晰)
- 变量名称选择之前初始化的
5. 发送单封汇总邮件
同样在Condition的Yes分支下,把
Send email (V2)(Outlook连接器)放在Apply to each的外面(循环结束后)邮件内容里引用变量
已删除文件列表,示例邮件正文:今日自动清理了OneDrive中超过7天的旧文件,列表如下:
@{variables('已删除文件列表')}若要统计删除数量,可在邮件里添加表达式:
length(body('Filter_array')),比如共清理了@{length(body('Filter_array'))}个文件
关键说明
- 全程使用OneDrive原生动态字段:筛选时用
Last modified,删除时用Id,取文件名用Name,无需额外适配SharePoint字段 - 邮件仅在有文件被删除时发送,完全符合原有的判断逻辑
- 变量通过循环追加的方式汇总所有文件名,最终生成完整的删除列表
内容的提问来源于stack exchange,提问作者user22062628
相关产品推荐
相关产品推荐

