超越录制:脚本的条件分支、循环与变量
通过录制并回放操作来创建宏,是自动执行重复性工作的最简便方法。然而,录制的宏有一个根本特性,那就是“每次都执行完全相同的操作”。实际业务中往往需要根据情况改变操作,其中包含许多判断,例如“如果库存为零,就下单订货”或“如果总额超过预算,就发出警告”。仅靠录制无法处理这种“判断”。
这时,“脚本”便派上了用场。通过脚本,可以将条件分支(如果……就……)、循环(重复)和变量(用于保存数值的容器)等编程基本要素融入自动化。听到“编程”一词,你也许会感到畏惧,但这些要素只是将日常判断直接转化为具体形式,其思路并不难。本文将把脚本作为录制之后的下一步,通俗易懂地讲解脚本的三大支柱。
条件分支(IF/ELSE):让它作出判断
条件分支是一种“仅在某个条件成立时执行特定处理”的机制。IF块只在条件为真(正确)时执行其中的处理,而ELSE则负责其他情况。例如,可以用它实现这样的操作:“如果屏幕上出现‘错误’字样,就通知负责人;否则直接进入下一步。”
可作为条件的内容包括屏幕上显示的值、特定像素的颜色或变量中保存的数值等。人类会下意识地完成“查看屏幕、判断情况、决定下一步行动”这一系列流程。条件分支正是为了将这种判断纳入自动化。只需编写一次,此后计算机就会代替你,每次都作出正确判断。
循环(LOOP):让它重复执行
循环是一种多次重复相同处理的机制。它与指定宏的“回放次数”相似,但脚本中的循环更加灵活。除了可以指定“重复10次”这样的次数之外,还能根据情况进行重复,例如“重复到列表中没有更多行”或“重复到满足特定条件”。
循环的真正价值会在处理大量数据时展现出来。只需用循环包围“处理一条数据”的操作,就能将其变成“处理列表中的所有数据”。无论是100条还是1000条,都只需编写处理一条数据的操作,其余数据会由循环自动逐条处理。手动操作需要数小时的任务,使用循环后只需编写一次,接下来等待完成即可。这正是自动化从节省“几分钟”跃升为节省“数小时”的分水岭。
变量:记住数值
变量是用于在处理过程中临时保存值的“盒子”。计数器(当前是第几次)、文件名、从屏幕读取的数值、计算过程中的中间结果——将这些值存入变量后,就可以在后续步骤中反复使用。例如,“将单元格的值读取到变量中,如果超过1万,就将其转录到另一个工作表”这样的处理,可以通过组合变量和条件分支来实现。
当变量、条件分支和循环这三者齐备时,自动化的表现力会迅速提升。“读取数据(变量)、根据内容改变处理方式(条件分支)、应用于所有数据(循环)”——仅凭这一组合,就能覆盖相当大一部分实际工作。这里正是单纯的录制与回放无法触及的“智能自动化”的入口。
通过错误处理实现“不会停止的自动化”
熟悉条件分支、循环和变量后,接下来要掌握的就是“错误处理”。长期运行自动化时,意外情况必然会发生。网络瞬间断开、应当打开的文件找不到、屏幕显示与平时不同——遇到这些情况时,毫无准备的脚本会当场完全停止。如果是在夜间无人值守运行,工作可能一直停到第二天早上。
这时,TRY/CATCH 错误处理机制就能派上用场。它可以实现这样的流程:“即使 TRY 块中发生失败,也不会让所有处理就此停止,而是切换到 CATCH 块中编写的处理(记录错误、发送通知、仅跳过这一项并继续处理下一项等)。”这样一来,即使有一项失败,其余项目也能处理到最后,从而实现可靠的自动化。也就是说,把人类习以为常的“即使失败,也先记录下来再继续”这种应对方式教给脚本。
了解常用的 SCR 命令
makuroku 的 SCR 脚本提供了实际工作中经常使用的各种命令。无需一次记住所有命令,但了解它能做些什么,有助于拓展思路,让您想到“这个似乎也能自动化”。下面列举一些典型命令。
- • FIND_IMAGE / WAIT_IMAGE:通过图像查找或等待屏幕上的元素
- • IF / ELSE / LOOP:条件分支与循环
- • SET / ADD / SUB:变量赋值与计算
- • READ_FILE / WRITE_FILE:读取和写入文件
- • HTTP_GET / POST:与外部服务通信
- • NOTIFY / PROMPT:显示通知、请求用户输入
通过组合这些功能,可以实现“从文件读取数据、根据条件改变处理方式、将结果发送到外部服务并通知完成”等仅靠简单录制远远无法达到的高级自动化。而且,每条命令的作用都很简单,因此并不难掌握。只需从当前需要的命令开始,逐步扩充自己的工具库即可。
可通过脚本实现的自动化示例
将条件分支、循环、变量和错误处理结合起来,就能实现简单录制远远无法达到的自动化。让我们来看几个具体示例。比如,“逐一打开文件夹中的所有文件,检查其内容,并只将符合条件的文件移动到另一个文件夹”这项工作,就可以通过循环遍历所有文件,再使用条件分支进行分类来实现。手动操作需要一小时的分类工作,只要编写一次脚本,几分钟内即可完成。
另一个例子是,“定期从网站获取数据,与上一次的值进行比较,并在发生变化时发出通知”这类监控工作也是脚本所擅长的领域。通过 HTTP 通信获取数据,与保存在变量中的上一次值进行比较,再利用条件分支实现“有变化就通知”。将其与定时执行结合起来,就能建立一套无需你做任何操作也不会错过变化的监控机制。
这类自动化乍看之下似乎很难,但其中的每个要素——循环、条件分支、变量、通信、通知——其实都很简单。难的是“一次性理解全部内容”,而不是“逐一将它们组合起来”。可以先只学习条件分支,接着只学习循环,像这样从当前需要的要素开始逐步拓展,不知不觉间,你就能够自行构建相当高级的自动化了。
重要的是,不要一开始就追求完美的脚本。先制作一个能运行的最小版本,实际执行后,再逐步修正运行不顺利的地方。makuroku 具有实时高亮当前执行行的调试功能,因此你可以一边直观确认“现在执行到哪里、正在发生什么”,一边进行改进。尝试、修正、再次尝试——这样的反复过程才是熟练运用脚本的最快途径。
保持脚本易读的技巧
脚本并非写完就结束,之后往往还需要重新查看和修改。因此,编写时就注重“易读性”,将来会为自己省下很多麻烦。这里有几个技巧。首先,要为变量取一个含义明确的名称。不要使用“x”或“a”,而应使用“总金额”“目标文件名”等能体现内容的名称,这样日后再看时,也能立即理解处理意图。
其次,为每组处理添加注释。哪怕只是“从这里开始获取数据”“在这里检查金额”这样的简短备注,也会让整个脚本的流程更容易理解。此外,将复杂的处理拆分为多个小脚本也很有效。相比一条冗长的脚本,按职责划分的一组短脚本更容易修改和复用。以“未来的自己能否读懂”为标准来编写,是打造可长期使用脚本的秘诀。
脚本调试方法
编写脚本时,难免会遇到无法按预期运行的情况。这时不要慌张,找出原因的过程就是“调试”。调试的基础,是明确区分“到哪里为止运行正常,从哪里开始与预期不同”。makuroku 具有实时高亮当前执行行的功能,以及在屏幕上显示中间值的 PRINT 输出功能,便于你一边直观确认“现在执行到哪里、正在发生什么”,一边查找原因。
有效的调试方法,是先将处理过程划分成较小的部分,再逐段确认其运行情况。如果试图一次完成全部内容,就很难判断问题出在哪里。逐步编写、频繁运行,确认能够正确工作后再继续下一步。这样踏实的反复操作,最终会带来最快、最可靠的脚本开发。即使出现错误,只要把它看作提示你“应该修改哪里”的线索,调试就没什么可怕的。
学习脚本的推荐顺序
下面介绍一下学习脚本各项要素的推荐顺序。首先要掌握的当然是条件分支(IF/ELSE)。“如果……就……”这样的判断是一切自动化的基础。接下来是循环(LOOP)。在处理大量数据时,重复处理能发挥巨大作用。只要学会使用这两项,就能自动完成许多单纯录制无法实现的工作。
再下一步是变量。保存数值的机制与条件分支和循环相结合,可以实现更加灵活的处理。学到这里后,就可以学习错误处理(TRY/CATCH)了。如果要长期无人值守运行,就必须具备即使途中失败也不会停止的机制。最后,只需根据目的,从实际需要的内容开始学习文件操作、HTTP通信、OCR等专业命令即可。
重要的是,不要试图一次记住所有内容。在实际工作中,当你想到“如果能做到这个就方便了”时,再去查找并尝试使用相应功能。这种“因实际需要而学习”的方式,最终最容易真正掌握。与其从头开始按顺序阅读教材,不如一边自动化眼前的工作,一边随时吸收当下所需的要素,这样更能培养实用能力。
脚本乍看之下可能很难,但每一个要素都很简单,只要循序渐进地学习,就一定能够掌握。一旦掌握,你能够自动化的工作范围将大幅扩展。请先从录制开始,再尝试加入一个条件分支,以此迈入脚本的世界。
从录制平稳过渡到脚本
越是觉得“脚本似乎很难”的人,越应该知道:你不需要从空白开始编写。在 makuroku 中,可以先通过GUI录制操作,再将宏转换为可编辑的SCR脚本。也就是说,你从一开始就能获得一个可运行的框架。之后只需修改必要的部分,比如用LOOP包围需要重复的部分,或在需要判断的位置添加IF。
此外,输入时会进行语法检查,因此能当场提示书写错误。还有一项调试功能会实时高亮当前执行的行,让你一眼就能看出“现在正处理到哪里”。得益于这些辅助功能,从录制过渡到脚本十分平缓。先通过录制搭建框架,再逐步添加条件和循环——按照这种方式,即使没有编程经验,也能亲手创建实用的自动化。使用 makuroku,可以免费试用所有这些功能。
免费试用
用 makuroku 来自动化它
makuroku 录制你的鼠标和键盘操作,然后自动回放。需要更多时可加上 SCR 脚本和 AI(MCP)集成。所有功能在 Windows 上免费使用。