Microsoft 365 中无人参与 RPA 环境中的无人参与自动化 Office 的注意事项

尽管适用于无人参与 RPA 的 Microsoft 365 提供了一个许可证,可在没有用户的情况下实现 Office 自动化,但所有当前版本的 Office 都设计并测试为在客户端工作站上以最终用户产品的形式运行,用户存在,以便与应用程序的界面进行交互。 由于使用没有用户存在的应用程序而导致的意外行为不是缺陷。 如果要在此配置中运行 Office,则必须准备好在应用程序逻辑中考虑这些意外行为。

本文概述了 Office 无人参与自动化的一些注意事项,以便在使用此方法时提供帮助。 但是,请注意,此配置中 Office 的使用严格按“原样”使用,并且必须考虑到这些意外行为。 此处提供的信息并不详尽,不能保证解决所有客户端的所有问题。 建议在部署之前全面测试解决方案。

无人参与自动化中的常见问题

如果想要在没有用户存在的情况下使用 Office,请注意以下方面,Office 的行为方式可能与预期不同。 若要使解决方案成功运行,它必须解决这些问题并尽可能降低其影响。 生成应用程序时,请仔细考虑这些问题。

重要

Microsoft 目前不建议也不支持从任何无人参与的非交互式客户端应用程序或组件 ((包括 ASP、ASP.NET、DCOM 和 NT Services) )自动化 Microsoft Office 应用程序,因为 Office 在此环境中运行时可能会表现出不稳定的行为和/或死锁。 有关详细信息,请参阅 Office 服务器端自动化的注意事项

交互式 UI 元素

Office 应用程序假定它们正在以交互方式运行。 如果发生意外错误,或者需要未指定的参数才能完成函数,Office 旨在通过对话框提示用户,询问用户如何继续操作。 在无人参与的自动化中,这可能会导致应用程序显示为“挂起”,因为应用程序停止,直到它收到此输入。 如果要通过其公共 API 自动执行 Office,可以通过适当配置 Application.DisplayAlertsApplication.AutomationSecurity 等属性来抑制其中许多警报。 代码应设计为随时识别和处理阻止警报。

用户标识

运行应用程序时,即使应用程序通过自动化启动,Office 应用程序也需要用户标识。 此用户标识可能导致以下任何或全部:

  • 必须处理的其他登录 UI 的存在。
  • 无法打开和/或基于每用户访问权限编辑的文件。
  • 例如,对文件元数据的意外更改 (,某些文件属性将根据自动化应用程序实例) 的用户标识进行更新。

各种方法可以帮助缓解这些问题:例如,运行 文档检查器 以删除元数据。 根据你的方案考虑这些方法是否合适。

服务器端安全性

在无人参与的情况下运行 Office 并处理任意文件内容时,没有特定于该环境中的其他保护可用于防止存储在这些文件中的宏加载和运行。 Office 不会保护你免受无意中从代码运行宏,或启动另一台可能运行宏的服务器。 可以使用 Application.AutomationSecurity 等属性来缓解此风险,但应确保仅加载受信任的内容。

此外,Office 使用许多组件 (,例如 Simple MAPI、WinInet 和 MSDAIPP) ,这些组件可以缓存客户端身份验证信息以加快处理速度。 当 Office 在服务器端自动处理多个文件时,如果为该会话缓存了身份验证信息,则一个客户端可以使用另一个客户端的缓存凭据。 因此,客户端可以通过模拟其他用户来获取未授予的访问权限。

UI 更改

Office 中的 UI 元素基本上是稳定的,但不能保证任何 UI 元素的特定位置,并且可能会随着产品开发的发展而变化,以合并用户反馈并满足客户需求。 任何自动化的逻辑都必须考虑到这一点。 这些更改可能会导致按钮或组选项卡命名更改、在选项卡之间移动命令、添加新选项卡或根据功能弃用策略删除命令。 这些更改可以在 UI 中以及应用程序提供的辅助功能信息中发生,因为修改该信息是为了提高可用性并考虑持续客户反馈,并且可能会在不同时间为不同的用户推出。

即使没有产品更改,系统环境 ((例如屏幕大小/分辨率/DPI) )之间的差异也可能导致屏幕上项的位置发生变化。 依赖于屏幕坐标来模拟用户输入的任何方法都必须考虑这些更改并相应地进行调整。

单线程处理

Office 应用程序是基于 STA 的非重入应用程序,旨在为单个客户端提供多样化但资源密集型功能。 应用程序使用全局资源,例如内存映射文件、全局加载项或模板以及共享自动化服务器。 这可以限制可以并发运行的实例数,如果应用程序是在多客户端环境中配置的,则可能会导致争用情况。 如果计划运行任何 Office 应用程序的多个实例,则应计划在虚拟机级别隔离它们,以确保生成的解决方案的稳定性。

复原能力和稳定性

即使考虑到上述注意事项,如果应用程序以模拟用户输入或会话长度显著超过交互式使用的方式实现自动化,则它们可能会遇到交互运行时不存在的问题。 在此上下文中使用 Office 的解决方案应主动构建监视应用程序状态的机制,并根据需要 (和/或运行它们的虚拟机) 重启它们。

建议的替代项

Microsoft 强烈建议使用一些不需要在服务器端安装和运行 Office 的替代方法,并且比此配置中的自动化更高效、更快速地执行常见任务。 在项目中将 Office 作为服务器端组件使用之前,请考虑其他方法。

Microsoft Graph

Microsoft 图形 API提供对作为 Microsoft 云一部分的用户和解决方案可用的服务、数据和智能的访问,包括许多支持无人参与自动化需求的服务:访问用户的邮件/日历/联系人/文件、文档转换、Excel 工作簿计算等。 这些服务专为无人参与使用和大规模访问而设计,并利用标准 RESTful API 语法。 有关 Microsoft Graph 以及如何使用它来处理用户数据的详细信息,请访问以下内容:

打开 XML 文件格式

许多自动化任务涉及文档创建或编辑。 Office 支持 Open XML 文件格式,开发人员可以使用 ISO 29500 国际标准中定义的标准 XML 和 ZIP 技术创建、编辑、读取和转换文件内容。 可以通过任何 ZIP/XML 工具(包括 Microsoft .NET 3.x Framework 中的 System.IO.Package.IO 命名空间)对这些文件格式进行操作。 建议和支持直接编辑文件格式,以处理服务中的 Office 文件更改。

Microsoft 提供了一个 SDK,用于从 .NET 3.x Framework 操作 Open XML 文件格式。 有关 SDK 以及如何使用 SDK 创建或编辑 Open XML 文件的详细信息,请访问以下内容: