【自动化】AI 编排跨系统自动化流水线
摘要:用 AI 把邮件、Excel、通知串成一条自动跑的流水线。
一、痛点引入
每天早上到岗,第一件事是开 Outlook 翻邮件。某个同事或系统每天准时甩来一封"今日销售明细.xlsx"。你得:下载附件 → 打开 → 把新数据一行行粘进那张总表 → 算个合计 → 再给群里发一句"今日已更新,总额 XX 万"。这套动作一天一次、一周五次,机械、无聊、还容易粘错行。
"自动化流水线(pipeline,说白了就是把几个软件像接力赛一样串起来,一步干完自动跑下一步)"就是干这个的:让它替你盯邮件、替你搬数据、替你发通知,你只管偶尔看看有没有异常。今天咱们就聊聊怎么用微软的 Power Automate(一个"画流程图就能搭自动化"的工具,不用写代码,拖拖拽拽把触发器、操作连起来就成)和 Copilot Studio(在 Power Automate 外面再套一层"会对话的入口",让你用大白话下指令、它去调度后面的流)把这件事真正跑通。先把丑话说前头:它不是"许个愿就全自动",连接器、许可证、权限一样都省不掉——这些坑咱们第五节专门讲。
二、目标产出
学完这篇,你能搭出这么一条流水线:
收到一封带附件(.xlsx 销售明细)的指定邮件 → 自动把附件里的数据追加进一张 Excel 总表 → 算出当日笔数 / 总额 → 自动在 Teams 群里发一条"今日已更新,共 N 笔、合计 M 元"的通知。
可量化的交付物是:一个能 7×24 自己跑的 Power Automate 云端流(cloud flow,跑在微软云上的自动化流程,不占你电脑),外加一个可选的 Copilot Studio 对话入口,让你用"汇总今天的报表"这种大白话手动点名触发。注意,是"自动跑"不是"自动决策"——要不要报警、发给谁,规则还是你定。
三、案例实战
先把两个主角和它们的"能力边界"讲清楚,再动手。
3.1 先搞懂两个主角(以及它们不是什么)
- Power Automate:一个"画流程图就能搭自动化"的工具。它给你一堆"连接器(connector,说白了就是让 Power Automate 能跟某个软件——Office 365 Outlook、Excel Online (Business)、Teams、SharePoint——对话的'插头',每个插头封装好对方软件的接口)"。你放一个"触发器(trigger,流水线被点亮的'发令枪',比如'新邮件到达')",再连一串"操作(action,每一步具体干的事,比如'读 Excel 的一行')",保存就跑了。免费版跟着 Microsoft 365 走,但很多高级插头要单独买。
- Copilot Studio:在 Power Automate 外面套的一层"对话外壳"。它本来是做聊天机器人(copilot)的,但有个关键本事——话题(topic,一个对话意图,比如'处理今天的报表')里能直接调用一条 Power Automate 流,把对话里的词变成流的参数。等于给上面那条流水线装了个"会说人话的开关"。它也要单独许可证,不是买 Office 就送。
一句话定边界:Power Automate 负责"自动跑",Copilot Studio 负责"用话指挥它跑";两者都不是 AI 施了魔法——背后每个插头都要账号授权,每步逻辑都要你配。
3.2 编排思路:这条流水线长什么样
咱们用"接收邮件 → 写 Excel → 发通知"三站接力来设计,中间再插一刀 AI 抽取:
[邮件到达·带附件] -- Outlook 触发器
│
▼
[取附件内容] -- 获取附件操作
│
▼
[AI 抽取] ── AI Builder 表单/文档抽取模型(可选)
│ 把附件里的"日期/客户/金额"抠成结构化字段
▼
[写 Excel 总表] -- Excel Online 连接器:在表中添加一行(循环)
│
▼
[算汇总] -- 算笔数、合计
│
▼
[发 Teams 通知] -- 在频道中发消息为什么中间放一刀"AI 抽取"?因为附件若是 PDF 或图片、或字段不固定,直接读 Excel 表读不到。这时用 AI Builder(微软 Power Platform 里的 AI 模型库,能从单据/表单里自动识别并抽出字段,按调用量消耗额度)把杂乱内容变成干净字段,再落表。如果附件本身就是规整的 .xlsx 表,这一刀可以省,直接读表。
提示:AI Builder 的抽取模型(尤其是自定义表单模型)要"训练"——喂它十几二十份样本标注字段。别指望零样本直接准,这点第四节会再提。
3.3 动手搭:Power Automate 主流程(七步)
下面以"附件是规整 .xlsx、里面有个叫 SalesData 的表"为例。每一步都给中文界面里的操作名,版本不同可能略差,认准功能就行。
第一步:建流、选触发器
- 进 make.powerautomate.com,点"创建 → 自动化云端流(Automated cloud flow)",起个名如"邮件附件→总表"。
- 触发器选 Outlook 里的"当新电子邮件到达时(V3)"(V3 是当前常见版本号,老账号可能是 V2,功能类似)。
- 配置触发器参数:
仅包含附件 = 是;文件夹 = 收件箱(或某个子文件夹,建议让对方发到专用子文件夹,减少误触发);发件人 = 指定邮箱(可选,加了更稳);包含附件 = 是。
第二步:取附件
- 加操作 "获取附件(V2)"(属于 Outlook 连接器),把触发器的
邮件 ID填进去,它会返回一个附件数组。
第三步:判断文件类型(条件)
- 加 "条件(Condition)":
附件名 以 .xlsx 结尾才往下走;不是 Excel 的(pdf、csv、图片)走"否"分支,可以发个告警或直接跳过。 - 小坑:同一个邮件可能带多个附件,要用"对每个(For each)"把附件数组循环一遍,别只处理第一个。
第四步:把附件落盘为文件(创建文件)
- 加 OneDrive for Business / SharePoint 连接器的"创建文件(Create file)":
文件夹路径选一个固定的接收目录(如/邮件附件/),文件名用附件名(确保以.xlsx结尾),文件内容填上一步取到的"附件内容"。 - 这一步把邮件里的附件真正落盘成一个云端文件(而不只是停留在流的变量里),后面读数据就从这个文件读,更稳、也方便事后排查。
- 关键点:把"创建文件"返回的文件路径 / 文件 Id 存到动态内容里,下一步直接引用它,不要再回头碰原始"附件内容"。
第五步:读附件数据
- 在循环里加 Excel Online(商业版/Business)连接器的"列出表中存在的行(List rows present in a table)"。
- 文件位置选"OneDrive 商业版 / SharePoint"(个人 OneDrive 不行,企业连接器只认商业云端);
文件填上一步落盘得到的文件(创建文件返回的路径 / Id),表名填SalesData。 - 这一步拿到附件里所有行的数组。
第六步:写进总表(再套一层循环)
- 对上一步的行数组,再"对于每个":加 Excel Online 连接器的"在表中添加一行(Add a row into a table)",目标是你那张固定的总表文件(比如
SalesMaster.xlsx里的Master表),把字段一一映射过去。 - 关键点:总表文件本身必须先
Ctrl+T转成正式"表格(Table)",否则 Excel 连接器找不到"表"、添加行会报错。
第七步:算汇总 + 发通知
- 用 "筛选数组 / 计算" 或直接在总表里用公式列算"当日笔数""合计金额"(也可以进流里用"计算(Compose / 变量)"累加)。
- 最后加 Teams 连接器的"在聊天或频道中发布消息(V3)",消息正文拼上:
今日已更新,共 {笔数} 笔,合计 {金额} 元。频道选你那个群。 - 保存 → 测试:让对方发一封测试邮件,看总表是否多行、群里是否收到消息。
配置要点(单独拎出来):① 总表文件要常驻 OneDrive 商业版/SharePoint 且是"表";② 触发器里的"发件人/子文件夹"过滤能大幅减少误跑;③ 多附件、多行都要用循环,别漏;④ 流失败默认不会自动全量重试,关键步骤加"配置运行后(Configure run after)"做容错(见第五节)。
3.4 让 AI 入场:Copilot Studio 当"会说话的入口"
上面的流是"邮件一来就自动跑"。但有时你想"手动点名",比如月底想临时让 AI 把今天收到的报表汇总一下播报。这就用 Copilot Studio 接上。
第一步:在 Copilot Studio 建一个 copilot(对话机器人)
- 进 copilotstudio.microsoft.com,新建一个 copilot,随便起名"报表小助手"。
第二步:建一个话题(topic)并调用流
- 新建 话题(topic),触发器短语(trigger phrases)写几句大白话,例如:
汇总今天的报表处理附件邮件今天销售数据更新了吗
- 在话题画布里加一个节点 "调用 Power Automate 流(Call an action / 调用流)",选你刚才建的"邮件附件→总表"流;如果流需要参数(比如日期、要发的频道),在这里把对话里抽到的词映射进去。
- 给这个节点的输出接一句回复,比如"已处理,结果已发到群里"。
第三步(进阶):用生成式编排,少配一步
Copilot Studio 有"生成式编排(generative orchestration)":你不用把每个意图都画成固定话题,而是给 copilot 一段指令(指令=你写给 AI 的"岗位说明书",告诉它什么情况下调用哪个流、怎么回话),它自己判断该调哪条流。示例指令(这就是提示词 / prompt):
你是"报表小助手"。当员工说"汇总/处理今天的报表"或"更新销售数据"时,调用 Power Automate 流"邮件附件→总表",把当前日期作为参数传入;跑完后用一句话向员工播报结果(笔数、合计),并说明结果已发到 Teams 群。不要编造数字,流没返回就如实说"未取到数据"。
写这段提示词的诀窍:① 说清"什么时候触发";② 说清"调哪条流、传什么参数";③ 说清"怎么回话、不许编"。
提醒:生成式编排不是万能,复杂判断还是老老实实画话题节点更稳。它和"自动跑的流"是两条路——前者是人对话触发,后者是事件自动触发,可以并存。
3.5 这套编排还能往哪儿接
- 推送端不只有 Teams:换成 Outlook 发邮件、Planner 建任务、Dataverse 写记录都行,连接器换一个就行。
- 数据源不只有邮件附件:把触发器换成"SharePoint 里新增了文件""Forms 提交了问卷""Dataverse 新增了行",流水线照样跑。
- 老派自动化(VBA 的 macro、桌面软件)接不进云端?用 Power Automate Desktop(桌面流,专门驱动没接口的网页/老软件的 RPA 机器人) 补齐。至于 PowerShell:要在云端流里跑,通常经 Azure Automation 连接器运行 Runbook(脚本在 Azure 沙箱里执行);若要在本机执行,走本地数据网关(On-premises data gateway)+ 自定义连接器,或干脆改用 Power Automate Desktop 的"运行 PowerShell 脚本"动作(桌面流,跑在本机)。
四、原理小结
说人话讲原理:Power Automate 本质是个"事件驱动的集成层(integration layer,把不同软件用统一的'插头'接在一起、按事件顺序跑任务的中间层)"。每个连接器(connector)背后封装的是对应软件的 API(应用程序接口,就是软件对外提供的'标准办事窗口',Power Automate 通过它合法地读邮件、写表格)。触发器订阅一个事件("新邮件到达"),事件一发生,微软云就按你画的流程图,依次调用各连接器的 API 完成任务——所以这条流水线跑在云上,不占你电脑。Copilot Studio 是在这层之上加了"自然语言入口":它把你说的话解析成意图,再调用对应的流(或话题里你配好的动作)。而所谓"AI",在本文里主要干两件事——编排(决定先调谁后调谁) 和 抽取(从杂乱附件里抠字段)——它不是施了魔法全自动,每一个插头都要账号授权,每一次抽取都要额度,每一行逻辑都要你先设计。把它当"会自己跑的接力队",别当"许愿池"。
五、避坑指南
- 许可证不是"买 Office 就送",且有"标准 / 高级"边界。 跟随 Microsoft 365 工作账号通常能用的,是标准连接器(standard connector),比如 Office 365 Outlook、Excel Online (Business)、Teams、SharePoint——本文的流水线就靠这些。但高级连接器(premium connector,很多第三方数据源、企业系统插头)、AI Builder 抽取额度、Copilot Studio 本身都要单独买——Copilot Studio 常见是"按用户"或"按消息计费"的附加许可证。边界:一旦流里出现任一高级连接器(哪怕只有一个动作),整条流就可能要求对应许可证,否则一运行就报"需要许可证"。上线前先去管理员中心确认,别信"AI 全自动零配置",配置和付费都在前面。
- Excel 连接器只认"表(Table)",CSV 另走转换动作。 你的总表、附件里的数据区,都得先
Ctrl+T转成正式表格,且连接器读的是"表名"不是"sheet 名"。附件若是 CSV,Excel 连接器读不了。注意 OneDrive/SharePoint 的"转换文件(Convert file)"动作只支持转成 PDF,转不了 .xlsx,别踩这个坑;可行做法是用 Office Scripts(在 Excel Online 里写个"打开 CSV → 另存 .xlsx"的脚本,用"运行脚本"动作调用),或用第三方的转换连接器。注意别混淆:"创建 CSV 表(Create CSV table)"是用来把"流里已有的结构化数组 → 生成一段 CSV 文本"的,它和"读一个 CSV 附件"是两回事——读 CSV 附件靠上面说的转换方案,不是创建 CSV 表。这是最容易卡住新手的一步。 - 企业里有 DLP(数据丢失防护策略,管理员设的"哪些数据能去哪儿"的护栏)拦着你。 很多公司禁止"把邮件数据写进某些连接器"或"跨业务边界传数据"。流一保存就报"连接器被策略阻止"多半是它。上线前找 IT/管理员确认你要用的连接器在 DLP 里是"业务(business)"而非"被屏蔽(blocked)"。
- 附件有大小/格式上限,脏数据会写崩。 单个附件通常有大小上限(不同连接器量级不同,常见几十 MB 这一档),超大附件别直接塞进流变量,先存 OneDrive/SharePoint 用文件 ID 引用。PDF/图片不能直接"读",必须先过 AI Builder 抽取或桌面流 OCR。源数据里有空行、错列,添加行时就会写错位——上游数据干净,流水线才稳。
- 流失败不会自己全量重试,还可能写重。 默认没有自动重试全量;关键步骤用"Scope(作用域)+ 配置运行后(Configure run after = 失败也继续)"做容错,或开"重试策略"。另外同一封邮件被重复扫描会再写一遍,导致总表重复——加去重(用邮件 ID 当唯一键,写前先查是否已存在)才是正解。
六、进阶延展
往前回看 B18《AI 写脚本批量处理 Excel/Word》——用 AI 帮你写脚本批量处理 Excel/Word 文件,流水线里要批量改表、批量生成文档时正用得上;B19《AI 生成模块化脚本与错误处理》——把脚本拆成模块、加错误处理的写法在那篇讲透。本篇讲 Power Automate / Copilot Studio 编排,系列暂无专门的 Power Automate / Copilot Studio 地基篇,想补全触发器、连接器、话题这些积木,先以本文为主、配合 B18/B19 的脚本能力。
想再往上走一层,三个方向:
- 接没有 API 的老系统:用 Power Automate Desktop(桌面流) 驱动网页/旧软件,配合 COM object(组件对象模型对象,Windows 里让脚本直接操控 Excel/Word 等应用的底层接口;VBA 的 macro 本质上就是操作 COM object) 把传统 macro 的活也编排进同一条流水线,实现真正的端到端 RPA。
- 把 Excel 总表升级成正式数据底座:数据量一大,Excel 当数据库就吃力了。迁到 Dataverse(Power Platform 自带的结构化数据库),再用 DAX(数据分析表达式,Power BI / 数据模型里写汇总度量的公式语言) 做实时汇总,流水线只负责"写",分析交给 DAX。脏数据进来前,用 Power Query(Excel/Power BI 内置的数据清洗工具,把乱糟糟原始表整理成规整表) 先洗一遍,比在流里硬写逻辑稳得多。
- 让通知变"对话":把 Teams 单向播报升级成 Copilot Studio 多轮对话——员工能追问"昨天那笔大额是谁的",copilot 再调流查 Dataverse 回话,从"广播"进化到"能问答的报表助手"。