Workiva 同时支持 Python 标准库和 Python 包索引 (PyPI)。依赖项可以使用内置脚本编辑器自动生成,也可以在本地计算机上手动创建。
Workiva Scripting 包含在 Customize 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 兼容;版本信息应保存为.txt文件:echo requests==2.28.1 > requirements.txt -
将依赖项安装到新的 dependencies 目录中:
pip3 install --target ./dependencies --requirement requirements.txt -
创建一个 名为
dependencies.zip的文件:cd dependencies zip -r ../dependencies.zip . cd .. -
请求访问令牌:
开始之前,请确保您的 API 授权包含
script:write范围。有关创建或更新 API 授权的说明,请参阅 Workiva API 设置。curl -X POST https://api.app.wdesk.com/oauth2/token \ -H "Content-Type: application/x-www-form-urlencoded;charset=UTF-8" \ -H "Accept: application/json" \ -H "X-Version: 2026-01-01" \ -d "client_id=$CLIENT_ID&client_secret=$CLIENT_SECRET&grant_type=client_credentials"从响应中获取
access_token ,并将其用作下面的$BEARER_TOKEN 。 -
在您的 Workiva Scripting 项目中,为
dependencies.zip创建一个新的源:curl -X POST "https://api.app.wdesk.com/scripts/${SCRIPT_ID}/sources" \ -H "Content-Type: application/json" \ -H "Accept: application/json" \ -H "Authorization: Bearer $BEARER_TOKEN" \ -H "X-Version: 2026-01-01" \ -d '{"path":"dependencies.zip"}'响应返回新的数据源。将其
id保存为SOURCE_ID,用于内容上传请求。{ “ID”: ”<sourceId> ", "路径": "dependencies.zip" } -
启动
dependencies.zip源的内容上传。包含-i可显示响应头:curl -i -X POST \ "https://api.app.wdesk.com/scripts/${SCRIPT_ID}/sources/${SOURCE_ID}/contentUpload" \ -H "Accept: application/json" \ -H "Authorization: Bearer $BEARER_TOKEN" \ -H "X-Version: 2026-01-01"保存响应正文中的
uploadUrl和响应标头中的Location操作 URL。 -
上传
dependencies.zip 文件到返回的uploadUrl :curl -X PUT“<uploadurl> " \ -H "授权:Bearer $BEARER_TOKEN" \ --data-binary @dependencies.zip然后轮询操作 URL:
curl -X GET“<operationlocation> “ \ -H "授权:Bearer $BEARER_TOKEN" \ -H "X-Version:2026-01-01"遵守
Retry-After响应头,并重复轮询请求,直到状态为完成、失败或取消。除非操作成功完成,否则请勿运行脚本。 -
要测试
requests库,请运行以下代码脚本:import requests print(requests.get('https://api.github.com').text)
FAQ|常见问题解答
支持哪些 API 和库?
Workiva Scripting 目前支持:
- Workiva 公共 API
- 非Workiva API
- Python 标准库
- Python包索引 ( PyPI)
Workiva Scripting 目前仅支持 Python。
要了解更多信息,请参阅 Workiva 支持页面 支持的 Workiva 脚本库和依赖项。
Workiva Scripting 中使用的是哪个版本的 Python?
新脚本运行在 Python 3.13 上。Workiva Scripting 仍然支持现有的 Python 3.9 脚本,但对 Python 3.9 的支持将于 2027 年 10 月结束——因此您应该尽快将所有 Python 3.9 脚本迁移到 Python 3.13。
要了解更多信息,请参阅 Workiva 支持页面将脚本迁移到 Workiva 中的 Python 3.13。
Workiva是否为使用Python或Java等流行语言的API客户端提供支持?
我们目前不提供 Python 或 Java 的公共 SDK。
但是,我们为 Workiva API 提供了开放的 API 规范,因此您可以自行生成这些库。例如,您可以获取 Workiva 平台 API 的 OAS文件并生成客户端库。
是否有专门用于脚本编写的 API?
是的。公共脚本 API 可通过 2026-01-01 Workiva API 版本获得。每次请求都附上 X-Version: 2026-01-01。
有关支持的操作、范围和要求,请参阅 脚本 API 指南 。
如何创建和查看 Workiva 公共 API 的 API 授权?
您需要按照此处的 说明获取客户端 ID 和密钥。
如何使用 Python 进行 Workiva 公共 API 的授权?
以下示例获取访问令牌并检索其工作区中 API 授权可访问的脚本。API 授权需要script:read范围。有关创建或更新 API 授权的说明,请参阅 Workiva API 设置。
import os import requests AUTH_URL = "https://api.app.wdesk.com/oauth2/token" SCRIPTING_API_URL = "https://api.app.wdesk.com/scripts" API_VERSION = "2026-01-01" CLIENT_ID = os.environ["CLIENT_ID"] CLIENT_SECRET = os.environ["CLIENT_SECRET"] token_response = requests.post( AUTH_URL, headers={ "Content-Type": "application/x-www-form-urlencoded;charset=UTF-8", "X-Version": API_VERSION, }, data={ "client_id": CLIENT_ID, "client_secret": CLIENT_SECRET, "grant_type": "client_credentials", }, timeout=30, ) token_response.raise_for_status() headers = { "授权": f"Bearer {token_response.json()['access_token']}", "X-版本": API_VERSION, } scripts_response = requests.get( SCRIPTING_API_URL, headers=headers, timeout=30, ) scripts_response.raise_for_status() print(scripts_response.json())如何使用Python更新单元格格式?
您可以通过调用 Workiva 平台 API 的更新工作表内容端点(POST /spreadsheets/{spreadsheetId}/sheets/{sheetId}/update)从脚本更新单元格格式。
- 使用
applyFormats字段应用粗体、数字和货币格式以及底纹等格式,使用applyBorders应用边框。 - 我们建议您将多个格式操作批量到一个请求中——每个字段都接受一个操作数组,并且端点有速率限制——而不是为每个范围发送一个请求。
更多信息,请参阅以下 Workiva 开发者页面:
我可以读取/写入或上传存储在 Workiva 中的非 Workiva 文件吗?
是的。使用 Workiva 的文件管理 API,您可以将非 Workiva 文件(例如 PDF、图像或其他任意文件类型)作为支持文档上传到平台,从而保留原始文件。要上传一个文件,请使用导入文件端点,并将kind设置为SupportingDocument。支持文档会与您的其他 Workiva 文件一起显示,并且可以像其他任何文件一样进行列出、移动、复制、导出(下载)和删除。
了解更多:文件管理 API 简介
我可以通过编程方式创建和管理自动化流程吗?
目前还没有可用于以编程方式创建或管理自动化的端点。