你好,我是小A。
这是AI作战笔记的第十九篇,也是扣子工作流第7篇,AI实战记录版块的第9篇。
前几篇,我们搭了“邮件处理”“Excel数据处理”。今天,我们把这两个能力串起来:销售数据处理完之后,自动把结果发到经理邮箱。
一、场景痛点:数据整理好了,还要手动发邮件
假设你是一家贸易公司的销售助理。每个月,销售员会上传订单明细,你需要:
统计每个销售员的月度销售额
计算每个产品的销量排名
筛选出销售额低于目标的销售员
把统计结果发给销售经理
做数据分析(10分钟)+ 写邮件、加附件、发送(5分钟)。每周重复,一个月4次,光是发邮件就要花20分钟。
能不能把“发邮件”也自动化?
二、解决方案:Excel处理 + 邮件发送
在第6篇“Excel数据处理”工作流的基础上,增加一个“邮件发送”节点。你只要上传原始订单明细,剩下的——清洗数据、统计销售额、生成分析报告、发送邮件——全部自动完成。
工作流设计:
上传Excel → 代码节点(Python处理) → 邮件节点(自动发送) → 结束
三、准备工作
扣子账号(已注册)
一份销售订单Excel文件(可用示例数据)
一个用于接收测试邮件的邮箱
四、工作流配置步骤
节点1:开始节点——接收文件
添加入参,类型选“文件”,命名 excel_file。
节点2:代码节点——处理销售数据
复制以下代码到代码节点中:
python
import pandas as pdimport iodefmain(params):# 获取上传的文件 file_bytes = params.get("excel_file")ifnot file_bytes:return{"error":"未接收到文件"}# 读取Excel df = pd.read_excel(io.BytesIO(file_bytes))# 1. 按销售员统计 sales_by_seller = df.groupby('销售员').agg( 总销售额=('销售额','sum'), 订单数=('订单编号','count')).reset_index() sales_by_seller = sales_by_seller.sort_values('总销售额', ascending=False)# 2. 按产品统计 product_stats = df.groupby('产品名称').agg( 总销量=('数量','sum'), 总销售额=('销售额','sum')).reset_index() product_stats = product_stats.sort_values('总销量', ascending=False)# 3. 低业绩预警 low_performers = sales_by_seller[sales_by_seller['总销售额']<3000]# 4. 生成汇总报告 summary =f"""【销售数据周报】统计周期:{df['日期'].min()} 至 {df['日期'].max()}一、销售员业绩排名{sales_by_seller.to_string(index=False)}二、产品销量排名{product_stats.to_string(index=False)}三、低业绩预警(销售额<3000元){low_performers.to_string(index=False)iflen(low_performers)>0else"无"}四、整体指标- 总订单数:{len(df)} 单- 总销售额:{df['销售额'].sum():.0f} 元- 平均客单价:{df['销售额'].mean():.0f} 元"""# 5. 输出Excel文件 output = io.BytesIO()with pd.ExcelWriter(output, engine='openpyxl')as writer: sales_by_seller.to_excel(writer, sheet_name='销售员业绩', index=False) product_stats.to_excel(writer, sheet_name='产品销量', index=False)iflen(low_performers)>0: low_performers.to_excel(writer, sheet_name='低业绩预警', index=False) df.to_excel(writer, sheet_name='原始数据', index=False) output.seek(0)return{"result": output.getvalue(),"summary": summary}代码说明:
第17-25行:按销售员分组,计算总销售额和订单数
第28-36行:按产品分组,计算总销量和总销售额
第39行:筛选出销售额低于3000元的销售员(预警)
第42-58行:生成纯文本格式的汇总报告(用于邮件正文)
第61-69行:将多个统计结果输出到一个Excel文件的不同工作表中
节点3:邮件节点——自动发送
在节点库中添加“邮件发送”节点。关键配置:
| |
|---|
| manager@company.com |
| 【销售周报】 |
| |
| |
正文效果示例:
五、测试与发布
先用自己邮箱测试,收件人填自己
上传示例销售数据文件(文末附有示例数据)
点击“试运行”
检查邮箱是否收到邮件,正文格式是否正确
确认无误后,把收件人改为正式邮箱,点击“发布”
附:示例销售数据
六、进阶:设置定时触发,实现周报全自动
如果你希望系统每周一自动处理上周的销售数据并发送邮件,可以再加一个“定时触发”节点:
定时触发(每周一9:00) → 读取固定路径的Excel → 代码节点 → 邮件节点
前提是每周的订单明细都放在同一个位置,且有统一的命名规则。扣子支持从飞书文档或云存储读取文件,配置一次后,每周全自动运行。
七、核心逻辑总结
这套工作流的本质就是:处理 → 发送。
你只需要点一次“运行”,或者设置好定时触发。以后每次数据更新,经理的邮箱里会自动收到当周的销售统计报告。
八、从今天开始
如果你想搭建自己的“Excel处理+邮件发送”工作流:
准备好销售订单Excel文件(可用上面的示例数据)
在扣子中创建工作流,复制上面的代码到代码节点
添加邮件节点,配置收件人、主题、正文、附件
用测试文件试运行,确认能收到邮件
跑通后,可以设置定时触发,实现全自动周报
不需要自己写代码,只需要复制粘贴、拖拽节点、填几个配置项。
下一篇,我会开启一个新系列——“普通人AI入门”。专门写给那些想用AI、但不知道从哪儿开始的朋友。
小A
于2026年4月26日