Workiva 同时支持 Python 标准库和 Python 包索引 (PyPI)。依赖项可以使用内置脚本编辑器自动生成,也可以在本地计算机上手动创建。
注:目前仅可通过自定义 Workiva 实现脚本编写。了解更多。
要求
- 您的工作区必须启用 Workiva 脚本功能。了解更多关于Workiva脚本的信息。
- 要创建或编辑脚本,需要 脚本编辑器 角色。
支持的库
Workiva 脚本开箱即用 ,支持 Python 标准库 ;您只需在代码中导入模块即可开始使用。该库包含内置模块,可提供对文件 I/O 等系统功能的访问,以及针对常见编程问题的许多标准化解决方案。
除了标准库之外, Python 包索引中还有越来越多的组件可供使用。您需要在脚本中生成依赖项,其中包括您想要使用的 PyPI 组件。
我们常用的 PyPI 组件之一是“requests”组件,它允许您通过 Workiva 公共 API与 Workiva 平台进行交互。
注:需要额外安装的 PyPI 组件可能不受支持。
使用脚本编辑器生成依赖项
脚本编辑器可以自动构建依赖项。
方法如下:
- 从 主页打开一个 脚本文件(或创建一个新文件)。
- 转到左侧的 源 面板,在当前源正下方的空白处单击鼠标右键,然后选择 + 添加源文件。
- 创建一个名为: requirements.txt的新源。
- 在中心画布上,添加一行,指定要安装的库和版本。(这是我们示例图片中的 requests==2.28.1 行。
)
- 点击左上角的 保存 。
- 请刷新页面。请勿跳过此步骤!
保存并刷新后,Workiva 会自动生成一个名为 dependencies.zip的依赖项包。现在您可以在 代码中使用该库了。
从本地计算机生成依赖项
要手动创建依赖项,您必须在本地构建软件包并将其上传到脚本编辑器。例如,你的项目可能需要访问“requests”库来运行脚本:
import requests print (requests.get('https://api.github.com').text) 这可以通过使用与pip兼容的包管理器来完成:
- 以 pip 兼容的格式定义要访问的“requests”库的版本;应将其保存为 .TXT 文件:
echo requests==2.26.0 > requirements.txt
- 将依赖项安装到新的 Dependencies 目录中:
pip3 install --target ./dependencies --requirement requirements.txt
- 创建 dependencies.zip 文件:
cd dependencies
zip -r ../dependencies.zip
. cd
.. - 在您的 Workiva Scripting 项目中,创建一个空的 dependencies.zip 文件:
curl -k -v -X POST \
-H 'Content-type: application/x-www-form-urlencoded;charset=UTF-8' \
-d "client_id=$CLIENT_ID&client_secret=$CLIENT_SECRET&grant_type=client_credentials" \
https://api.app.wdesk.com/iam/v1/oauth2/token - 要获取端点的链接, 请点击脚本编辑器顶部菜单中的“运行链接 ”按钮:
curl -X POST https://h.sandbox.wdesk.com/s/scripting/v0/scripts/<script-id> /files \
你应该会得到以下响应。您可以从那里获取文件 ID。
-H "Content-Type: application/json" -H "Authorization: Bearer $BEARER_TOKEN" \
-d '{"path":"dependencies.zip"}'
{"id":"<file-id> ","path":"dependencies.zip"} - 要获取脚本中的文件 ID 列表, 请发送GET请求:
curl -X GET https://h.sandbox.wdesk.com/s/scripting/v0/scripts/<script-id> /files \
-H "Content-Type:application/json" \
-H "Authorization: Bearer $BEARER_TOKEN" - 将 dependencies.zip 文件上传到新的文件 ID:
curl -X PUT https://h.sandbox.wdesk.com/s/scripting/v0/scripts/<script-id> /文件/<file-id> [
-H "授权:Bearer $BEARER_TOKEN" --data-binary @dependencies.zip - 要测试“requests”库,请运行以下代码脚本:
import requests print (requests.get('https://api.github.com').text)
FAQ|常见问题解答
支持哪些 API 和库?
Workiva Scripting 目前支持:
- Workiva 公共 API
- 非Workiva API
- Python 标准库
- Python包索引 ( PyPI)
对其他语言的支持仍在考虑之中,未来可能会实现。
了解更多: 支持的 Workiva 脚本库和依赖项
Workiva Scripting 中使用的是哪个版本的 Python?
Workiva Scripting 目前支持使用 Python 3.9 和 Python 3.13,对 Python 3.9 的支持将于 2026 年 3 月结束。
了解更多: 在 Workiva 中将脚本迁移到 Python 3.13
Workiva是否为使用Python或Java等流行语言的API客户端提供支持?
我们目前不提供 Python 或 Java 的公共 SDK。
但是,我们为 Workiva API 提供了开放的 API 规范,因此您可以自行生成这些库。例如,您可以获取 Workiva 平台 API 的 OAS文件并生成客户端库。
是否有专门用于脚本编写的 API?
脚本 API 端点 可作为 Workiva 的原型平台 API中的原型端点使用。
如何创建和查看 Workiva 公共 API 的 API 授权?
您需要按照此处的 说明获取客户端 ID 和密钥。
如何使用 Python 进行 Workiva 公共 API 的授权?
以下代码片段调用 IAM 服务生成访问令牌,然后使用该令牌对脚本原型端点进行身份验证。它将获取 API 授权(即客户端)在创建该授权的工作区中有权访问的所有脚本的列表。
import requests import json import os AUTH_URL = "https://api.app.wdesk.com/iam/v1/oauth2/token" SCRIPTING_API_URL = "https://api.app.wdesk.com/prototype/platform/scripts/" CLIENT_ID = os.getenv('CLIENT_ID') CLIENT_SECRET = os.getenv('CLIENT_SECRET') tokenResponse = requests.post( AUTH_URL, data = 'client_id=' + CLIENT_ID + '&client_secret=' + CLIENT_SECRET + '&grant_type=client_credentials', headers = {'Content-Type': 'application/x-www-form-urlencoded; \ charset=UTF-8'}) accessToken = 'Bearer ' + json.loads(tokenResponse.text)['access_token'] dataRes = requests.get(SCRIPTING_API_URL, headers = {'Authorization': accessToken}) print(json.loads(dataRes.text))
如何使用Python更新单元格格式?
更新工作表内容 原型端点允许使用 Python 代码更新单元格格式。
我可以读取/写入或上传存储在 Workiva 中的非 Workiva 文件吗?
目前,没有可用于读取/写入或上传存储在 Workiva 中的非 Workiva 文件的端点。
我可以通过编程方式创建和管理自动化流程吗?
目前还没有可用于以编程方式创建或管理自动化的端点。