如何使用 SAP Intelligent Robotic Process Automation 自动操作 Excel

机器人流程自动化 (Robotic Process Automation,简称 RPA) 是一种允许用户将企业重复的、基于规则的业务流程进行自动化的解决方案。
与需要将流程步骤硬编码
到系统中的传统自动化解决方案不同,RPA 利用了当今机器学习和人工智能的最新成果,通过观察真实用户完成流程的方式,来了解如何执行任务的自动化。
要想了解 RPA 解决方案的工作原理,可以把它想象成录制一个宏。一旦录制完成,RPA 机器人可以自主执行任务,不但能够用于复杂任务,而且可以处理任务中的异常情况,不断积累知识以响应持续变化的输入条件,利用被自动化的应用的 UI 更改。
一个更易于理解的 RPA 工作原理示例,可以考虑电子邮件和文本消息应用程序中的预测文本功能。 当我们键入电子邮件、文本等时,该应用程序会记住我们使用的某些语法和单词,然后在将来键入时自动根据这些提出建议。
RPA 所有做出的这些努力,都为最终用户从繁琐,重复,乏味的体力活中摆脱出来,让其可以进行技术附加值更高的其他事情,这也是智慧企业所倡导的 更聪明地工作,而不是更努力地工作
的一个指导方针。
除了常见的使用编程语言操作 Excel 文件之外,SAP 新发布的 SAP Intelligent Robotic Process Automation(简称 SAP iRPA),提供了强大的企业级自动化流程解决方案,善加利用,可以在不需要编程的情况下,像使用编程语言一样灵活地操作 Excel.
我们来看个具体而又简单的例子,用 SAP Intelligent Robotic Process Automation 操作一个 Excel 文件,往里面的单元格写入一个字符串,设置背景色然后关闭。
打开 SAP Intelligent Robotic Process Automation Desktop Studio,导入 SAP 预置的操作 Excel 的 nodejs 脚本库文件。

在库文件里选择 Excel Integration. 从下图能发现,SAP iRPA 除了 Excel 之外,也支持 Office 里其他应用比如 Word 和 Outlook.

新建一个名叫 jerryExcel 的 workflow,在工作流的 activities 面板里输入 seq,找到类型为 Sequence 的 Flow 控件。该控件允许我们在工作流里定义一系列顺序执行的步骤。

把 Sequence 控件拖拽到工作流编辑区域里,双击,就可以定义需要执行的详细步骤了。

Excel Lib 里预置了很多围绕 Excel 进行的操作,如 Init Excel,Open Excel,Close Excel 等等,每个操作对应一段 nodejs 代码。

比如把 Init Excel 拖拽到 Sequence 控件的 Activities 列表里之后,一旦保存,会立即看到自动生成的 nodejs 代码。Excel Lib 里每个 step,都对应一段 nodejs 代码。如此一来,即使 SAP Intelligent Robotic Process Automation Desktop Studio 的使用者没有编程基础,也能开发出能操作 Excel 的自动化工作流。

上图的 Init Excel 步骤是所有操作 Excel 的工作流都必须执行的一个初始化步骤。初始化完毕后,把 Open Excel 这个步骤拖拽到 Sequence Activities 里,指定要打开的 Excel 文件路径,在 Desktop Studio 里有红色提示。

把本地 Excel 文件的绝对路径维护进去:


第三步,设置打开的 Excel 第 1 行,第 1 列的值为'Hello Jerry':

第四步,设置第 1 行第 1 列的背景色:

将修改之后的 Excel 另存成另一个文件。执行这个项目,就会在 temp 文件夹里看到另一个 Excel 文件。

这个例子非常简单,让我们来看看它的工作原理。切换到 Script 面板,在第 45 行打开 Excel 的代码处设置断点,然后单步调试:

断点一旦触发,我们能观察到任务栏里出现一个 Excel 的应用窗口提示,没有显示任何内容:

在任务管理器能看到该应用通过参数/automation -Embedding 的方式启动:

我们想单步调试进 ctx.excel.file.open 方法内,发现断点并没有在 open 方法内停下来,而是直接执行完这个方法,此时任务栏上的应用标题从 Excel 更换成了 open 方法打开的文件名:1.xlsx.

从以上任务管理器里观察到的/automation 和 embedding 参数,我们已经能判断出,SAP iRPA 操作 Excel 的实现原理,和 Jerry 文章 使用 ABAP 操作 Excel 的几种方法 中提到的第一种方法,即通过 OLE 方式操作 Excel 是一致的。
如果非要刨根究底,可以到 SAP iRPA SDK 安装目录下,打开 excel.js 文件,找到 open 方法的实现,发现其调用了_excelApp 对象的 WorkBooks.Open 方法:

而_excelApp 对象,在 initialize 方法里通过 GetObject 从 OLE 对象 Excel.Application 中获取:

还记得 Jerry 文章 使用 ABAP 操作 Excel 的几种方法 里提到的 ABAP OLE 实现源代码么?也是采用同样的方式获取 Excel 应用对象,连编码方式都如出一辙。


既然已经聊到 JavaScript 操作 Excel 的话题了,就顺便提一句,目前另一种流行的 JavaScript 操作 Excel 的开源库,即 Node-xlsx,原理是基于 Office Open XML 协议去解析 Excel 文件,ABAP 也有对应的基于 Office Open XML 的实现:CL_XLSX_DOCUMENT.

这种方式较之 SAP iRPA 采用的 OLE 解决方案,优势在于避免了对 Excel 应用的依赖,多用于服务器端对 Excel 的处理任务。
总结
本文首先给出了企业级 Robotic Process Automation 解决方案(简称 RPA)的诞生原因和适用场合,接着以 Excel 文件的自动化操作为例,详细介绍了 SAP iRPA 解决方案的使用步骤。
版权声明: 本文为 InfoQ 作者【Jerry Wang】的原创文章。
原文链接:【http://xie.infoq.cn/article/4aafff3e291cb21d47c8408c9】。文章转载请联系作者。
评论