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 ..
-
请求访问令牌:
curl -X POST https://api.app.wdesk.com/iam/v1/oauth2/token \ -H 'Content-Type: application/x-www-form-urlencoded;charset=UTF-8' \ -H 'Accept: application/json' \ -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/prototype/platform/scripts/<scriptId> /sources \ -H "Content-Type: application/json" \ -H "Accept: application/json" \ -H "Authorization: Bearer $BEARER_TOKEN" \ -H "X-Version: 2022-01-01" \ -d '{"path":"dependencies.zip"}'响应返回新的数据源,包括其 ID:
{“ID”:”<sourceId> ","path":"dependencies.zip"} -
要获取脚本中的 源ID 列表,请发送GET请求:
curl -X GET https://api.app.wdesk.com/prototype/platform/scripts/<scriptId> /sources \ -H "Accept: application/json" \ -H "Authorization: Bearer $BEARER_TOKEN" \ -H "X-Version: 2022-01-01"
-
为该源发起内容上传,然后将
dependencies.zip放入返回的 uploadUrl:curl -X POST https://api.app.wdesk.com/prototype/platform/scripts/<scriptId> /sources/<sourceId> /contentUpload \ -H "Accept: application/json" \ -H "Authorization: Bearer $BEARER_TOKEN" \ -H "X-Version: 2022-01-01"
响应返回上传目标:
{"uploadUrl":"<uploadUrl> }然后将二进制文件上传到该URL:
curl -X PUT“<uploadUrl> " \ -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 Scripting 目前仅支持 Python。
了解更多: 支持的 Workiva 脚本库和依赖项
Workiva Scripting 中使用的是哪个版本的 Python?
新脚本运行在 Python 3.13 上。Workiva Scripting 仍然支持现有的 Python 3.9 脚本,但对 Python 3.9 的支持将于 2027 年 10 月结束——因此您应该尽快将所有 Python 3.9 脚本迁移到 Python 3.13。
了解更多: 在 Workiva 中将脚本迁移到 Python 3.13
Workiva是否为使用Python或Java等流行语言的API客户端提供支持?
我们目前不提供 Python 或 Java 的公共 SDK。
但是,我们为 Workiva API 提供了开放的 API 规范,因此您可以自行生成这些库。例如,您可以获取 Workiva 平台 API 的 OAS文件并生成客户端库。
是否有专门用于脚本编写的 API?
是的。脚本 API 端点 目前作为原型端点在 Workiva 的原型平台 API中提供。
公共脚本 API 端点将于 2026 年夏季推出。一旦可用,您将被要求迁移到公共端点——对 Workiva Scripting 非公共端点(包括原型)的支持将于 2027 年 10 月结束。
如何创建和查看 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更新单元格格式?
您可以通过调用 Workiva 平台 API 的更新工作表内容端点(POST /spreadsheets/{spreadsheetId}/sheets/{sheetId}/update)从脚本更新单元格格式。使用applyFormats字段应用粗体、数字和货币格式以及底纹等格式,使用applyBorders应用边框。将多个格式操作批量到一个请求中——每个字段接受一个操作数组,并且端点有速率限制——而不是为每个范围发送一个请求。
了解更多:更新表格内容和电子表格数据指南。
我可以读取/写入或上传存储在 Workiva 中的非 Workiva 文件吗?
是的。使用 Workiva 的文件管理 API,您可以将非 Workiva 文件(例如 PDF、图像或其他任意文件类型)作为支持文档上传到平台,从而保留原始文件。要上传一个文件,请使用导入文件端点,并将kind设置为SupportingDocument。支持文档会与您的其他 Workiva 文件一起显示,并且可以像其他任何文件一样进行列出、移动、复制、导出(下载)和删除。
了解更多:文件管理 API 简介
我可以通过编程方式创建和管理自动化流程吗?
目前还没有可用于以编程方式创建或管理自动化的端点。