OUTLOOK 收邮件遇到附件名称相同问题
场景:有 3 个 SAP 操作场景(下单,退货,请款),每个场景用户都会提供一个 EXCEL 模板,通过邮件发送给 RPA 机器人,机器人定时读取邮件根据主题来调用相应的模块完成工作
问题:现在遇到一个问题,甲乙两个员工各发送了一个主题为“退货”,并带一个附件“退货.xlsx”的附件给 RPA 邮箱,虽然 2 个附件名字一样但甲乙的内容是不同的,此时发现“收邮件组件”能识别 2 个邮件,看组件的输出,2 封邮件附件返回的 path 是一样的,如此附件内容不同就没有办法体现,请问是否有解决的建议
设计器版本:9.0
经过 2 天的各种尝试和论坛大咖的思路,终于实现,大致逻辑如下:
每次只读一封未读邮件,outlook 收邮件组件不能用主题 / 附件关键字筛选,通过 mail[0].subject 拿到外面进行 in 匹配,然后再根据匹配结果分类转去“退货”,“下单”等流程
如有有相同需求的可以 @我提供代码
谢谢论坛 liujingsi,pengliang,zhoucheng 的帮忙
回帖内容已被屏蔽。
不好意思好久没登录论坛了,你提供邮箱我发给你
你好。我有类似应用。能共享一下代码吗?谢谢。
本来没有保存出来,通过 mail[0].attachments 获取,现在把附件先强制保存到指定目录,这样就可以直接引用,不存在 \ 的转换问题
谢谢帮忙,已经解决。
谢谢,总算解决,还是先把邮件附件保存出来,关键字匹配后再改名
返回附件的路径你可以自己设置的吧?你这个好像是临时文件路径
把这个路径中多余的东西去掉看看,另外在前面加 r 试试
通过字符串的方法来处理就好,这个你自己上网查询。
另外之前我也提示过,在尝试循环处理的时候,可以直接将附件保存在不同路径,这样就不需要这个“移动文件”这个步骤了。
*
* 尝试了一次就读取一封邮件,请问 mail[0].attachments 返回的附件 path 格式是
“[‘C:\\Users\\cnrpa01\\AppData\\Local\\Temp\\\\ 江苏凤凰 1-9.xlsx’]”
这个值无法用来“移动文件”,需要怎么转换? 因为文件名前面的 \ 数量比文件夹的 \ 多,无法用替换字符串方式进行,有好的方法吗?
1、可不可以一封邮件处理完毕后,再处理另一封邮件?相当于附件文件夹内一次只保存一个邮件的附件,处理完这个邮件相应的后续流程后,把这个文件夹的文件移动到另一个文件夹去
2、使用变量为每一封邮件建一个单独的不会重复的文件夹,附件地址使用这个变量
我说的处理第一封和处理第二封是组件处理邮件时的先后顺序,并不是建议用循环,即使用循环还是逃脱不了修改附件保存路径或文件名,这是既定的事实;
如若非要使用循环分别读取邮件进行操作,也可在“附件保存路径”参数传入变量将附件保存在不同路径下;
但相较而言,这里的建议还是协调让发送者在发送邮件的时候修改附件的文件名,按照一定格式有所区分地命名。
现在就是按这个思路去尝试的,但是就是会发现循环后获得的附件都是同一个
先 outlook 收邮件 ->for 循环处理列表 -> 复制文件组件把附件保存去指定目地 -> 循环
处理第一封邮件:读取、保存附件至选定目录下
接着处理第二封:读取、保存附件至选定目录下 ~~~ 因为附件名称相同,同一目录下,自然就会覆盖
处理办法:协商发送邮件者采取一定格式以区分;如要体现附件内容不同,可以读取两个表格,再对内容作比较就好。
另外:手动情况下两个相同文件名的文件也需要修改文件名称才能保存在同一路径,而 RPA 是模拟人的行为,所手动情况下无法实现的事情,RPA 也无法实现,这是设计流程首先要注意的。
你用循环处理试试看,处理完一个再接收另一个
实际看 outlook 收邮件组件的输出,如果 2 封邮件有相同的附件,返回的 path 是一样的,这样如果附件内容不同就没有办法体现
附件名称一样,应该是被覆盖了吧。