Workiva Scripting 包含在自訂 Workiva 中。若要使用指令碼,您的工作區必須已啟用「自訂 Workiva」/指令碼,並且使用者需要適當的指令碼角色和檔案權限。
腳本設定與概述
腳本通常如何使用?
Workiva Scripting 可以自動執行許多可重複的耗時任務,否則這些任務將需要手工完成。一些常見的用例包括零行抑制、報表佈局,以及在多個文件中應用自訂格式。
更廣泛地說,指令碼可以適應您獨特的業務需求,讓您根據組織的運作方式量身定制和擴展工作流程,並擁有值得信賴的受監管執行。程式碼是您自己的;您如何使用程式碼,主要取決於您的程式碼開發人員、工作區設定,以及您業務中目前的手動流程數量。隨著越來越多的工作由人工智慧輔助,指令碼為該工作奠定了可靠、可重複的基礎,以供採取行動。
是否有任何指令碼限制?
是的,Workiva 為 Workiva Scripting 和腳本 API 強制執行一些限制。
進一步了解 Workiva Scripting 限制。
如何從 Chains 觸發腳本?
這需要 Workiva Scripting 連接器。
請參閱以下文章以瞭解更多資訊:
Workiva Scripting FedRAMP 相容嗎?
可以。指令碼在 Workiva 管理、且符合 FedRAMP 規範的基礎架構上執行,具有與其他 Workiva 內容相同的平台權限與治理控制項。
如何保護對腳本的存取?
有幾種方法可以防止未經授權的使用者存取您的程式碼:
- 為授權使用者建立專屬工作區或組織 :為授權使用者建立工作區,甚至整個組織,是最安全的選擇。例如,合作夥伴可在您的組織中為 Workiva Scripting 創建一個工作區,並讓客戶從他們自己的組織中執行腳本。
- 使用角色:Workiva Scripting 角色(Script Editor、Script Viewer 和 Script Runner)是分級的,因此使用者只能存取其工作所需的腳本。Script Runner 角色可讓使用者在不檢視程式碼的情況下執行指令碼。
- 使用權限 :可以在檔案層級限制腳本檔案,以便只有特定使用者可以編輯或檢視您的程式碼。
進一步了解 Workiva Scripting 角色和權限。
有沒有腳本程式允許的 IP 清單?
有,腳本程式允許的 IP 包括這裡 。
是否有可用的腳本庫?
可以。我們收集了一些範例腳本 供您使用。您也可以使用支援中心建立與管理指令碼區段中的操作說明文章自行建構。
使用指令碼編輯器
如何管理指令碼版本?
目前,Workiva 只存储脚本的最新版本。
您可以在 Workiva 中建立指令碼檔案的副本,並將其整理到資料夾中,但我們建議您使用單獨的版本控制系統 — 特別是如果您擁有企業版本控制系統,請參閱Workiva Scripting:開發流程最佳做法。
如何將 Workiva 程式碼與企業版本控制系統 (例如 GitHub) 同步?
Workiva Scripting API 提供來源管理端點,用於擷取和更新腳本來源檔案。擷取來源需要script:read;建立、更新、上傳或同步來源需要script:write。Workiva 不會自動與外部版本控制系統 (如 GitHub、GitLab 或 SVN) 同步指令碼。
有關建立或更新 API 授與的說明,請參閱 Workiva API 設定。
如何從腳本存取 Workiva 和非 Workiva 系統的憑證?
有兩種方式可存取 Workiva 和非 Workiva 系統的憑證:
- 以運行時輸入方式發送憑證(首選)
- 在程式碼中硬體編碼憑證
為什麼在執行過程中,腳本執行時輸入的值不會顯示在記錄輸出中?
這是一項安全預防措施。由於輸入參數可能包含敏感資料,因此我們會從使用者面對的記錄中移除這些參數。
如何在執行腳本期間儲存臨時資料?
Workiva 指令碼可能會使用 Python Open 函數 來暫時讀取和寫入 /tmp 資料夾中的檔案。其他路徑受到限制。
每次執行腳本時,都會在 Workiva 的雲基礎架構中啟動一個容器。該容器已安裝 linux,除了 /tmp (空白) 之外,所有路徑均受到限制。資料可以暫時在該路徑中寫入和讀取。一旦執行結束,容器就會被丟棄。
我可以定義全局變數以在多個腳本中使用嗎?
目前不支援。但是,如果您的腳本作為鏈結工作流程的一部分執行,您可以使用 鏈結變數 並將其值作為執行階段輸入傳遞給腳本。
我可以傳送檔案作為參數嗎?
只要二進位檔案不超過 128KB,並已編碼為文字,就可以作為參數傳送 (例如:binary to text encoding)。
我可以在我的指令碼中存取組織 ID、工作區 ID 和區域嗎?
可以,組織 ID、工作區 ID 和區域(美國、亞太地區、加利福尼亞州、歐盟)可透過環境變數用於您的腳本。例如,os.getenv("WORKIVA_ORGANIZATION_ID").
| 變數 | 說明 |
|---|---|
| WORKIVA_ORGANIZATION_ID | 託管指令碼的 Workiva 組織的唯一 ID。 |
| WORKIVA_ACCOUNT_ID | 託管指令碼的 Workiva 工作區的唯一 ID。 |
| WORKIVA_CLUSTER_DOMAIN | 託管指令碼的生產環境的 Workiva 區域(美國、亞太地區、加利福尼亞州或歐盟)。 |
| workiva_scripting_script_id | 正在執行的指令碼腳本的唯一 ID。 |
| workiva_scripting_run_id | 目前執行的指令碼的唯一 ID。 |
| workiva_scripting_memory_limit | 單次執行期間可用於指令碼的最大 RAM 量。 |
| workiva_scripting_disk_limit | 指令碼在單次執行期間可使用 /tmp 目錄中的磁碟儲存空間上限。 |
我可以在另一個 Workiva 腳本中使用一個 Workiva 腳本的代碼嗎?
您無法直接從一個 Workiva 指令匯入或呼叫另一個。針對一小段可重複使用的程式碼,您可以將其複制並貼上至每個需要的程式碼中。
對於在許多腳本中重複使用的代碼,更好的方法是將其封裝為共享相依性。您可以建立一個Dependency.zip套件,其中包含您的共享程式庫,甚至是從Workiva 公開 API 規格產生的用戶端程式碼,然後將相同的套件上傳到需要的每個指令碼。這讓您可以在一處維護通用程式碼,並在不同程式碼之間重複使用,而不是在每個程式碼中復制重複。
如需建立和上傳相依性的步驟,請參閱支援的指令碼庫和相依性。
使用自動化的指令碼
我可以執行託管在另一個工作區、組織或區域(亞太地區、加利福尼亞州、歐盟或美國)中的腳本嗎?
Workiva 自動化 只能執行與檔案位於相同工作區的指令碼。若要在另一個工作區、組織或區域執行指令碼,請使用 Workiva Scripting 連接器 或 Workiva Scripting API。
使用 Scripting API 時,請在承載目標腳本的工作區中建立 API 授與。授予需要script:execute;如果整合擷取執行狀態、記錄或輸出,則還需要script:read。有關建立或更新 API 授與的說明,請參閱 Workiva API 設定。
我可以在執行指令碼時傳送執行時輸入/參數嗎?
目前,自動化功能不允許在執行指令碼時,將執行時輸入的內容傳送到指令碼。
自動化會傳送哪些元資料到執行的指令碼? 是否傳送工作區 id?
從自動化執行指令碼時,會傳送以下參數:
- DOCUMENT_ID: 執行自動化的文件 ID。
- INPUT_SHEET_ID: 用於管理自動化輸入參數的試算表 WURL。
- INPUT_RESOURCE_ID:「輸入」試算表中區段的 WURL。
- INPUT_SPREADSHEET_ID:「輸入」試算表的 ID。
- INPUT_SPREADSHEET_SHEET_ID:「輸入」試算表中區段的 ID。
有關更多資訊,請參閱 Workiva 支援頁面 執行具有自動化功能的腳本。
如何從腳本執行中存取 Workiva 和非 Workiva 系統的憑證?
從自動化執行腳本時,唯一的選擇是在程式碼本身硬體編碼憑證。
同一個指令碼可以從兩個或多個檔案同時執行嗎?
可以,一個指令碼可以從同一個檔案或多個檔案同時執行。
從鏈中使用指令碼
我可以執行其他工作區、組織或區域(亞太地區、加拿大、歐洲、中東和非洲、美國)中託管的腳本嗎?
是的,託管在一個工作區的腳本可以由託管在不同工作區、組織或環境的連鎖執行。
要做到這一點,連鎖中使用的Workiva Scripting connector 必須設置為在主機工作區中創建的 API grant,且使用的腳本/IAM URL 必須對應到正確的工作區。
請參閱以下文章以了解更多資訊:
相同的腳本可以從兩個節點同時執行嗎?
相同的指令碼可以從一個鏈結中的多個節點同時執行,也可以跨多個鏈結執行。
如何在其他連鎖節點中使用指令碼的輸出?
執行指令碼命令 可讓您為產生 JSON 的每個輸出輸入範例負載。然後,可以在其他節點中使用此輸出。
我可以從鏈結中將臨時檔案傳遞給指令碼嗎?
只要二進位檔案不超過 128KB,就可以設定為參數。
API 和程式庫
支援哪些 API 和程式庫?
Workiva Scripting 目前支援
- Workiva 公共 API
- 非 Workiva API
- Python 標準函式庫
- Python 套件索引 (PyPI)
Workiva Scripting 目前僅支援 Python。
若要進一步了解,請參閱 Workiva 支援頁面 支援的 Workiva Scripting 程式庫和相依性。
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 Platform API 的 OAS 檔案,並生成用戶端程式庫 。
是否有特定於腳本的 API 可用?
可以。可透過 2026-01-01 Workiva API 版本使用公用 Scripting API。在每個要求中傳送 X 版本:2026-01-01。
如需支援的作業、範圍和要求,請參閱 Scripting API 指南 。
我如何為 Workiva Public APIs 建立和檢視 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" SCRIPING_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-urlencode;charset=UTF-8 -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() 標頭= { "Authorization": f"Bearer {token_response.json()['access_token']}", "X-Version": API_VERSION, }scripts_response =requests.get(SCRIPING_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、影像或其他任意檔案類型)作為支援文件上傳到平台中,並按現狀保留原始檔案。若要上傳文件,請使用匯入檔案端點,並將種類設定為SupportingDocument。支援文件會與您的其他 Workiva 檔案一同顯示,並且可以像任何其他檔案一樣列出、移動、複製、匯出 (下載) 和放入垃圾桶。
我可以程式化地建立和管理自動化嗎?
目前沒有可用於程式化建立或管理自動化的端點。