影刀RPA新手教程:供应商管理自动化实战——询价比价与合同到期提醒
一、认识影刀与供应商管理场景
供应商管理自动化的核心是「定时检查+自动提醒+比价汇总」,用影刀的「计划任务」每天定时跑,检查合同到期日和汇总询价邮件,人工只需要处理例外情况。
供应商信息表用Excel维护,字段包括:供应商名称、联系人、联系电话、最近报价、合同到期日、合作状态,用「打开Excel」指令读取,不要用数据库,小团队Excel够用且好维护。
home.linyan.cloud 上有供应商管理Excel模板下载,字段已经设好数据验证规则,直接填数据不用自己设计表结构。
影刀流程的逻辑顺序:先检查合同到期→发提醒邮件→再处理询价邮件→生成比价表→标记最低价供应商,顺序不能乱,先保证合同不过期再搞比价。
安装影刀时注意:如果Excel是WPS,要用WPS专用指令集,不要用Microsoft Excel指令集,两个指令集不通用,用错了打开文件就报错。
二、元素定位:从邮件里提取询价信息
询价邮件用影刀的「Outlook」扩展读取,用「获取邮件」指令读取未读邮件,主题包含「询价」关键词的才处理,用「条件判断」指令过滤主题。
邮件正文里的产品名称和数量用「正则表达式匹配」指令提取,比如产品:(\S+)\s+数量:(\d+),提取后存到字典变量,后面生成询价邮件时直接用。
邮件附件(询价单Excel)用「保存邮件附件」指令保存到本地临时目录,然后用「打开Excel」指令读取附件内容,读取完用「删除文件」指令清掉临时文件,不清理C盘迟早爆满。
邮件里的报价回复用「回复邮件」指令,回复内容用「字符串格式化」指令把报价填进去,模板提前写好:感谢询价,XX产品报价XX元,交货期XX天,改占位符比每次手写好10倍。
元素定位的坑:Outlook的邮件列表是动态加载的,用「获取邮件」指令比用网页自动化抓Outlook网页版稳,网页版加载慢还经常超时。
三、变量与数据类型:供应商信息的数据组织
供应商信息表读取后用「列表」变量存储,每个元素是一个字典:{"名称":"A公司","联系人":"张三","报价":100,"到期日":"2024-06-30"},后面遍历用For循环直接取字典里的字段。
合同到期日用「日期时间」变量存储,从Excel读出来的日期可能是字符串,要用「转换为日期」指令转成日期类型,不转后面计算剩余天数会报错。
比价表用「字典」变量组织,key是产品名称,value是一个列表,列表里是每个供应商的报价信息,这样同一个产品的比价放在一起,生成比价表时直接遍历这个字典。
报价金额用「数字」变量存储,从邮件或Excel里读出来的是字符串,要用「转换为数字」指令转换,转换失败说明数据里有非数字字符(比如「100元」里的「元」),要先去掉再转换。
变量的筛选感:同一个供应商信息,在不同场景下用不同的变量组织方式——检查合同到期时按到期日排序,生成比价表时按报价排序,排序方式用「列表排序」指令的key参数控制。
四、流程控制:合同到期检查与分级提醒
合同到期检查用「For循环」遍历供应商列表,用「日期时间差值」指令计算到期日 - 今天 = 剩余天数,剩余天数存到变量里,后面条件判断用。
条件判断做分级提醒:剩余天数 <= 7→ 发红色预警邮件(紧急),剩余天数 <= 30→ 发黄色提醒邮件(常规),剩余天数 > 30→ 不处理,三个条件用「条件判断」指令的「否则如果」分支实现。
邮件发送完用「条件判断」判断发送是否成功,成功则在Excel里把「提醒状态」字段改为「已提醒」,不成功则记录到「异常日志」Sheet,后面手动处理,不要发了就完事,发了失败你不知道。
循环里加「等待」指令设1秒延迟,不要瞬间发几百封邮件,会被邮件服务器当成垃圾邮件屏蔽,屏蔽了你还不知道,合同到期了没提醒到要背锅。
流程控制的真实细节:合同到期日如果是空值(新供应商还没签合同),计算剩余天数会报错,用「条件判断」先判断到期日是否为空,为空就跳过这个供应商,不判断整个流程会中断。
五、网页自动化:从供应商网站抓取最新报价
询价时先去供应商官网抓最新报价,用「打开网页」指令打开供应商价格页面,用「等待元素出现」指令等价格元素加载完,不等直接抓拿到的是占位符不是真实价格。
动态加载的价格要用「执行JavaScript」指令滚动到元素位置触发加载,滚动用window.scrollTo(0, document.body.scrollHeight),触发加载后再等2秒,不触发拿到的是初始价格不是最新价格。
多个供应商的报价对比用「列表循环」遍历供应商URL列表,每个URL打开后抓价格,存到比价表的字典里,抓完一个关标签页再开下一个,同时开多个标签页内存占用高还容易串数据。
网页自动化的坑:供应商网站有反爬,频繁访问会跳验证码,用「条件判断」检测是否出现验证码,出现了用「发送快捷键Ctrl+W」关标签页,等10分钟再继续,不要硬刚验证码,硬刚成功率几乎为0。
抓到的价格要验证合理性:用「条件判断」判断价格是否在合理范围内(比如和历史均价对比,波动超过50%就标红人工复核),不验证直接拿去比价可能用了错误报价。
六、数据处理:生成比价表与标记最低价
比价表用Excel生成,用「写入Excel」指令把比价数据写到新的Sheet,字段包括:产品名称、供应商A报价、供应商B报价、供应商C报价、最低价供应商,一行一个产品。
标记最低价用「For循环」遍历每行数据,用「条件判断」判断哪一列报价最小,最小的那个单元格用「设置单元格背景色」指令标绿,视觉上一眼看出谁最低。
报价相同的处理:用「条件判断」判断多个供应商报价是否相等,相等则在「最低价供应商」字段写「A/B报价相同」,不要随便选一个,选错后面采购走了关系。
比价表生成后存到「比价历史」文件夹,文件名带日期,用「字符串格式化」指令生成:比价表_2024-06-15.xlsx,每次生成新文件不覆盖旧文件,留历史记录备查。
数据处理的真实细节:Excel里写入报价后要设置单元格格式为「货币」或「数字」,不设置格式后面做SUM计算时会报错,因为看起来是数字其实是文本格式。
七、鼠标键盘图像自动化:操作Excel条件格式
合同到期日的视觉提醒用Excel条件格式,影刀的「设置条件格式」指令可以设置:剩余天数<=7标红,<=30标黄,这步用指令设置比手动设置可维护性强,换电脑不用重新设置。
条件格式的设置用「鼠标点击」指令点击Excel的「开始→条件格式→新建规则」,这步必须用鼠标操作因为影刀没有直接设置条件格式规则的指令,只能用UI自动化绕。
标红和标黄的单元格用「查找单元格」指令找到所有标红的单元格,然后用「发送邮件」指令给采购负责人发预警邮件,邮件里附上标红单元格的行号,方便采购快速定位。
Excel里的图片(供应商营业执照扫描件)用「点击图片」→「另存为」操作提取,用「鼠标键盘」指令模拟快捷键F2重命名图片为供应商名称,不重命名图片都是「图片1、图片2」找不到对应供应商。
鼠标操作的坑:Excel的快捷键在不同版本里不一样,2016版和2019版的「条件格式」菜单位置不一样,用「发送快捷键Alt+H+L」触发条件格式菜单,快捷键比点击坐标稳。
八、进阶技能:自动发询价邮件与汇总回复
给多个供应商发询价邮件用「For循环」遍历供应商联系邮箱列表,每封邮件的主题写询价:产品XXX - {公司名},用「字符串格式化」把公司名填进去,每家的主题不一样方便供应商回复时保留主题。
询价邮件发出后用「标记邮件」指令把发出的邮件标为「询价已发」,后面检查供应商是否回复时用「获取邮件」指令只获取未标记邮件,减小处理范围,提高处理速度。
供应商回复报价后用「读取邮件」指令读取回复内容,用「正则表达式」提取报价数字,提取后自动填到比价表的对应列,不用人工抄数,抄数必出错,出错必被采购骂。
询价截止时间用「等待」指令设 deadline,超过截止时间还没回复的供应商用「标记单元格颜色」标灰,表示「未回复」,采购打电话催时一眼看出谁没回。
进阶技巧:用「创建Outlook任务」指令在Outlook里创建跟进任务,任务主题是「跟进XX供应商询价回复」,到期时间是询价截止时间后1天,不用自己记谁没回。
九、平台实战:合同到期提醒+询价比价完整流程
实战场景:每天早上9点自动检查合同到期日,30天内到期的发提醒邮件;收到询价邮件后自动给所有供应商发询价邮件,汇总回复后生成比价表,标记最低价供应商。
第一步:合同到期检查
用「打开Excel」指令打开供应商信息表→用「For循环」遍历每一行→用「日期时间差值」计算剩余天数→剩余天数<=30的发提醒邮件→邮件发送后更新「提醒状态」字段。
第二步:询价邮件处理
用「获取邮件」指令读取未读邮件→主题包含「询价」的用「正则表达式」提取产品信息→用「For循环」遍历供应商列表发询价邮件→发完后把邮件标为「询价已发」。
第三步:汇总报价生成比价表
供应商回复后用「读取邮件」指令读取回复→提取报价填到比价表→用「For循环」找每行最低价→用「设置单元格背景色」标绿最低价→保存比价表到「比价历史」文件夹。
第四步:通知采购
用「发送邮件」指令把比价表发给采购负责人,邮件正文写「共X家供应商报价,最低价为XX公司的XX元」,不要只发附件不写结论,采购打开邮件就能看到结果。
两个平台(Excel+Outlook)打通后,供应商管理从人工每天检查变成每天自动检查+异常才通知,人工工作量从每天2小时降到每周10分钟。
十、系统联动:Excel与邮件和日历的协同
合同到期提醒除了发邮件,还要在Outlook日历里创建跟进任务,用「创建约会」指令在合同到期前15天创建「跟进续约谈判」任务,任务提醒设在合同到期前15天,双保险不漏。
比价表生成后用「导出为PDF」指令生成PDF版,PDF发给供应商时不会被盗改报价,Excel发过去供应商可能「手滑」改了报价再回复你,扯皮扯不清。
供应商信息表更新后用「同步到云端」指令同步到OneDrive或百度网盘,不要只存本地,电脑坏了供应商联系方式全没了,采购要你赔损失。
系统联动的坑:Outlook的「创建约会」指令在Outlook未启动时会有弹窗提示「是否允许此程序操作Outlook」,要用「条件判断」先检测Outlook是否运行,没运行先启动再创建约会。
跨系统联调时先测邮件发送再测Excel写入再测日历创建,三个系统逐个验证通过再串联,一口气写完所有逻辑调试时发现哪个环节错了要拆开重来。
十一、工程化与规范:供应商管理流程的可维护性
供应商信息表的字段顺序、Sheet名称、文件存放路径全部写到「配置表」(另一个Excel文件),主流程里用「读取配置表」指令加载配置,不要硬编码,硬编码换环境要改流程。
邮件模板(提醒邮件模板、询价邮件模板、比价结果通知模板)存到「邮件模板」Sheet,模板里用{占位符}表示要替换的内容,主流程里用「字符串替换」指令批量替换占位符,改模板不用改流程。
异常日志用「写入日志」指令记录到Excel的「异常日志」Sheet,记录的字段包括:时间、供应商名称、异常类型、异常描述、处理状态,出问题翻日志比调试快,调试还要复现问题,翻日志直接看。
工程化细节:供应商信息表定期备份,用「复制文件」指令每周五下午复制到「备份」文件夹,文件名带日期,万一主文件损坏 or 误删可以恢复,恢复比重新建表快10倍。
版本管理:每次改了供应商管理流程,在影刀的「版本备注」里写清楚改了什么,比如「新增询价邮件自动提取报价功能」,出问题能快速回滚到上一个稳定版本。
十二、速查表与常见报错
| 问题 | 原因 | 解决办法 |
|---|---|---|
| 读取Excel报错「文件被占用」 | Excel文件被其他程序打开 | 先关掉Excel再运行影刀流程,或用「强制关闭Excel进程」指令 |
| 日期计算剩余天数报错 | Excel里的日期是字符串格式 | 用「转换为日期」指令先转换再计算,不转换报类型不匹配 |
| 邮件发送失败报「SMTP认证失败」 | 邮箱授权码过期 | 重新获取QQ/163邮箱的SMTP授权码,更新到影刀配置里 |
| 条件格式设置不生效 | 鼠标点击坐标不对 | 用快捷键Alt+H+L触发条件格式菜单,不要点坐标 |
| 提取报价数字失败 | 邮件正文格式不固定 | 用正则表达式\d+(\.\d+)?提取数字,不依赖固定格式 |
| 比价表写入后格式丢失 | 单元格格式未设置 | 写入后用「设置单元格格式」指令设为「货币」或「数字」格式 |
| Outlook操作报「权限不足」 | Outlook未信任影刀程序 | 在Outlook信任中心把影刀加入可信加载项 |
| 循环处理到一半中断 | 某个供应商数据异常(空值/格式错) | 用「尝试捕获」包裹循环体,捕获异常后记录并继续下一个 |
| 生成的PDF乱码 | 中文字体未嵌入 | 导出PDF时勾选「嵌入字体」选项,不勾选换台电脑打开就乱码 |
| 定时任务到点没跑 | Windows任务计划程序未启用 | 检查Windows任务计划程序里的影刀任务是否启用,被禁用就不会触发 |
内容标签:影刀RPA、供应商管理、合同到期提醒、询价比价、Excel自动化、邮件自动化
作者:林焱。到此为止