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

如何在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的输出
  • 在循环内依次添加两个操作:
    1. Delete file(OneDrive连接器),文件标识符选择循环项的Id(动态内容里的Id)
    2. 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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 15:23:00