Workiva Scripting 为在 Workiva 软件上运行 Python 代码提供了一个灵活、安全的平台。本文涵盖了编写脚本时可能遇到的一些常见场景。
对于本文未涵盖的问题,请查看 我们的其他脚本编写文章或访问 Workiva API和 脚本编写社区。
注:目前仅可通过自定义 Workiva 实现脚本编写。了解更多。
管理员和权限问题
“执行脚本”操作未出现在自动化列表中
这表示您没有执行此脚本所需的角色。请联系您的工作区管理员以分配合适的 脚本角色。
如果已分配所需角色但仍然无法执行该操作,请确认该特定工作区中已启用脚本功能。
Chains 中不提供 Workiva Scripting 连接器
这表示您的工作区尚未启用 Workiva Scripting 连接器。联系我们 即可启用此功能。
工作区管理员看不到任何脚本角色。
这表示您的工作区尚未启用脚本功能。联系我们 即可启用此功能。
Workiva Scripting 连接器和命令问题(链)
命令开始执行,但脚本没有执行。
请确认您的工作区已启用脚本功能。如果还没有启用,请联系我们进行启用。
如果您已确认脚本功能已启用,则 Workiva Scripting 连接器 的集成用户可能未分配必要的角色。请联系您的工作区管理员以分配合适的 脚本角色。您还应该验证集成用户是否具有访问该命令触发的脚本的权限。
命令仍在执行中,但脚本执行意外停止。
请确认脚本执行是否在本命令之外被取消。运行历史记录可以在脚本编辑器的 属性 面板中找到,也可以通过 脚本原型 API 端点检索。
如果这不是问题所在,请确保脚本执行未达到允许的最大 RAM 使用量(请参阅 脚本限制)。您可以通过在代码中报告内存使用情况来实现这一点。
下面我们提供了一个示例,说明如何使用 Python标准库中的 tracemalloc 函数 报告内存使用情况。
# 导入模块
import tracemalloc
# 要监控内存的代码或函数
# def app():
lt = []
for i in range(0, 100000):
lt.append(i)
# 开始监控
tracemalloc.start()
# 函数调用
] app()
# 显示内存使用情况
print(tracemalloc.get_traced_memory())
# 停止库
tracemalloc.stop()
脚本执行也有最大运行时间限制(参见 脚本限制);请确保脚本执行时间未达到此限制。
最后,请确认脚本代码中不包含以下函数:
- 辞职()
- 出口()
- sys.exit()
- os._exit()
这些函数的功能几乎相同,都是通过引发 SystemExit 异常来导致 Python解释器退出。
命令和脚本执行不同步
当命令执行完毕但脚本仍在运行,或者反之亦然时,就会发生这种情况。
如果命令在脚本执行之前完成,请确保 命令超时 大于脚本执行时间(请参阅 脚本限制 以了解最大脚本执行时间)。
如果脚本执行在命令执行前几秒钟完成,这可能是由于脚本系统在脚本执行完成后处理信息而导致的预期延迟。只有当整个过程完成后,指挥部才会报告完成情况。
脚本编辑器
导入库不起作用
Workiva Scripting 开箱即用地支持 Python 标准库 ,以及 Python包索引 (Python 包索引)中提供的组件(有关更多信息, 请参阅 Workiva Scripting 支持的库和依赖项 ) 。需要额外安装的 PyPI 组件可能不受支持。
请确保您尝试导入的库是 Python 标准库或 Python 包索引的一部分。如果它是后者的组成部分,请确保不需要额外的安装。