最近总是会思考是否可以借用一些工具把日常一些重复性工作自动化了,节省自己的精力,之前有聊过一个叫make的云端自动化工具:自动化工具make,简化你的日常工作,发现深入了解下确实挺有意思,那么今天再介绍一个桌面的免费RPA工具,微软的Power Automate Desktop。
一、先简单说说Power Automate Desktop是什么
是一个用来简化工作流程、自动化任务的桌面工具。它可以自动化本地计算机上的一些重复性任务。
主要特点:
- 视觉化编程界面。
- 机器人流程自动化(RPA)功能。
- 与各种应用程序的集成。
优点:
- 简单易上手,低代码,很适合无编程基础的人。
- 能与Microsoft 365 应用、第三方服务和自定义应用程序轻松集成。
- 使用 UI 元素进行自动化,与应用程序和网页进行交互。
概念性的东西先简单介绍上面几点,只看这些的话不大好理解,还是用日常实际应用案例来切入介绍下用法吧。
二、我的需求
我比较早之前收藏了一些IT工具领域的youtube博主的频道id(对,就是id,我也忘了为什么收藏的是id),放在excel里,还没有订阅。但我也想知道这些博主每天有无更新,更新了什么内容。
![](https://duntools.com/wp-content/uploads/2024/01/image-107.png)
(类似这样,只有id是全的)
当然你也可以通过id找到频道,然后一个个订阅,打开小铃铛,即时获取更新。
不过我们今天想讨论的是如何通过automate来自动化这个过程,总结来说就是如何连接不同的应用去实现。那我就以我自己的需求为例抛砖引玉(通过excel里的这些id然后自动获取他们有无更新,更新了什么。)
大概流程是这样:
![](https://duntools.com/wp-content/uploads/2024/01/image-127.png)
我们分步来看如何配置
三、Power Automate Desktop配置
首先要在官网下载一个Power Automate Desktop
下载安装完成后,我们新建一个流
![](https://duntools.com/wp-content/uploads/2024/01/image-109-1024x588.png)
配置页面长这样,如下,我们从左边选择节点拖拽到中间区域来完成配置即可
![](https://duntools.com/wp-content/uploads/2024/01/image-110-1024x487.png)
我们按流程节点来看
1、每天固定时间打开excel
定时任务我们放到后面看,先看看如何配置打开excel
![](https://duntools.com/wp-content/uploads/2024/01/image-111-1024x484.png)
我们选择excel-启动excel,然后选择你要打开的excel在本地的地址即可。
2、获取频道id列
打开之后,我们需要读取里面频道id这一列的内容,所以我们就要用到“从excel表中读取”的功能
![](https://duntools.com/wp-content/uploads/2024/01/image-112-1024x503.png)
直接拖拽到启动excel动作下方,会自动弹出配置框,去配置内容,这里我们就选择读取所需的列就好(excel里频道列的行和列的值)
这两步配置完后,你可以点击运行试试看
![](https://duntools.com/wp-content/uploads/2024/01/image-114.png)
系统就自动帮你打开了excel,然后读取了频道id列
我们可以在右边的流变量这里看到运行后变量记录的值,是ok的。
![](https://duntools.com/wp-content/uploads/2024/01/image-115-1024x485.png)
3、循环每个id,看当天是否有更新
id有了,接下来我们就要每个id去检查下,看他当天是否有更新。这一步会稍等难一点
逻辑是这样,从读取到的表里,循环取每个id,通过youtube api去检查id的最新视频的更新日期,然后用这个更新日期和当天日期对比,如果是一样的,即当天有更新,就可以把更新的内容推送给我。
我们分步来看
(1)我们先配置一个循环动作
选择for each循环,选择要迭代的值,这个要迭代的值,就是需要遍历哪些值,我们直接选择ExcelData,这个ExcelData就是我们上一步从excel读取的频道id(这些id放在了ExcelData这个变量里)
![](https://duntools.com/wp-content/uploads/2024/01/image-117-1024x496.png)
(2)调用youtube api,去检查id下视频更新日期
我们选择调用web服务,然后配置URL。也就是我们从这个接口通过get方法来判断。
![](https://duntools.com/wp-content/uploads/2024/01/image-119.png)
api具体申请方法这里不细说了,之前介绍make那篇有说过,我们简单说下url含义
- https://www.googleapis.com/youtube/v3/search 这个是http的请求地址
- part=snippet 用于指定 API 响应将包含的一个或多个
search
资源属性的逗号分隔列表 - type=video 搜索查询限制为仅为video
- maxResults=1 返回最大值为1
- order=date 资源按照创建时间倒序排列
- channelId=%CurrentItem% 这个%CurrentItem%变量,是一个动态的,这里我们选择的是for each循环里存储的变量
- key={your_api_key} key就是api秘钥,把{your_api_key}替换成你自己的key即可
目的就是查询到频道id下最新更新的video。关于api,文档都有,这里就不详细说了 https://developers.google.com/youtube/v3/docs/search/list?hl=zh-cn
这步配置完后,你可以再运行一下,最后返回给你的是一串json
如下,你可以点变量值去查看
![](https://duntools.com/wp-content/uploads/2024/01/image-120.png)
这里你可以看到,publishedAt,就是最新视频的更新时间
(3)将json转为自定义对象、设置变量、转换时间格式
我们有了最新视频的更新时间,接下来的思路就是和当天的日期做对比,如果匹配,就说明当天有更新。
但是目前我们有的只是一串json,它肯定不能直接和日期对比,所以我们要进行一些转换。
首先我们把json转换成自定义对象。主要是格式的修改。
![](https://duntools.com/wp-content/uploads/2024/01/image-121.png)
接着我们要把里面的publishedAt字段,变成一个变量
![](https://duntools.com/wp-content/uploads/2024/01/image-122.png)
值这里,我们要选择到publishedAt这个字段,你可以在变量这里,看到它的路径,复制到上面的值里。
![](https://duntools.com/wp-content/uploads/2024/01/image-123.png)
运行之后你就可以看到最新的视频日期,就存在lastUpdateTime这个变量里了。格式如下
![](https://duntools.com/wp-content/uploads/2024/01/image-124.png)
但是我们和当天的日期做对比的话,只对比年月日就可以了,肯定不会精确到时分秒。所以我们要把这个时间的格式做调整
这里其实你可以写一个脚本,但是我们尽量用配置化的操作来完成。我也试了很久才发现用这种方式,先把日期转为文本,将日期转成短日期的格式,再把文本转为日期,这样我们就可以把它变成年月日的格式了(这种方式不一定最好,不过我暂时没找到其他方式)
![](https://duntools.com/wp-content/uploads/2024/01/image-125.png)
(4)获取当前日期
因为要做对比,我们需要知道当天的日期
我们可以用这个操作来配置
![](https://duntools.com/wp-content/uploads/2024/01/image-126.png)
好了,接下来我们就要进行对比了。
4、如果有更新,就返回给我对应的视频内容,没有则返回无更新
这里是有一个判断,所以我们要用到if else的判断功能
![](https://duntools.com/wp-content/uploads/2024/01/image-128.png)
if else大概逻辑是这样
![](https://duntools.com/wp-content/uploads/2024/01/image-129.png)
因为我计划让telegram的bot发送消息,那么就调用telegram的api来完成,申请bot的方式这里就不详细说了,之前的make有介绍过。
如果是暂无更新,我们用post方法,内容类型用json
url的格式按telegram bot api的来就好,https://api.telegram.org/bot{your_token}/sendMessage?chat_id={your_chatid}&text={变量值}
直接按这种方式拼接起来即可
![](https://duntools.com/wp-content/uploads/2024/01/image-131.png)
如果是有更新,同理
方法和内容类型都是一样的,不同的是url
![](https://duntools.com/wp-content/uploads/2024/01/image-132.png)
至此我们的配置基本就完成了。
可以点击运行,在telegram上看看效果
![](https://duntools.com/wp-content/uploads/2024/01/image-133.png)
虽然样式一般,不过是达到了我希望的需求,后面可以再进一步调调样式。
最后再说一下定时任务,比如我想每天或周期定时自动执行任务该怎么办。
在 Power Automate Desktop 中,目前没有内置的计划任务功能。只能通过 Windows 计划任务来实现,在Windows 搜索栏中输入 “任务计划程序”,然后打开。
![](https://duntools.com/wp-content/uploads/2024/01/image-134.png)
然后创建基本任务-选择触发器-选择操作-配置启动程序
Power Automate Desktop没有内置计划任务确实很不方便
今天就先介绍这么多,自动化流程工具确实是一个可以深入去挖掘的宝藏,后面也会继续去探索一些可以实现的场景。