Workiva Scripting 為在 Workiva 平台上執行 Python 程式碼提供了一個靈活、安全的環境。透過撰寫可自動執行可重複流程的自訂腳本,您可在多個報表、檔案和工作區中創造高效率。隨著越來越多的工作由 AI 協助,Scripting 為這些工作提供了可靠且受治理的基礎 — 兼具靈活性與所需的控制力,將自動化轉變為您值得信賴的可重複成果。
指令碼包含在自訂 Workiva 中。若要使用指令碼,您的工作區必須已啟用「自訂 Workiva」/指令碼,並且使用者需要適當的指令碼角色和檔案權限。
角色和權限
角色是 Workiva 中的全系統設定,意即它們為工作區中的每個腳本建立標準存取層級。有三種 Workiva Scripting 角色可由您的工作區管理員指定。
| 角色 | 訪問級別 |
|---|---|
| 腳本運行器 | 可以運行腳本。 |
| 腳本檢視器 | 可以查看腳本。 |
| 腳本編輯器 | 可以檢視、建立和編輯腳本。 |
有關詳細資訊,請參閱 指令碼角色和權限 支援頁面。
如何使用 Workiva 腳本
在工作區中啟用腳本後,腳本將與網站中的其他試算表、文件和簡報一起顯示在首頁畫面中。您可以建立新的指令碼,或從檔案清單中選取現有的指令碼。
腳本編輯器是您在網站上建立、編輯和執行腳本的地方。
其中包括:
- 中央畫布 您將在此編寫腳本
- 底部的輸出部分 ,您可以在此檢視執行腳本的結果
- 橫跨頂部的功能表列 ,您可以在此儲存或執行指令碼
- 右側的屬性面板 ,用於管理腳本屬性和執行歷史
- 左側的來源面板
指令碼建立後,可以手動、程式化、透過 Chains(自動化工作流程)或從 Workiva 檔案中執行。
若要手動執行指令碼:
- 按一下螢幕上方功能表列中的Run Script 。
- 按一下+ 新增變數 。
- 輸入要作為參數傳輸的環境變數名稱和值。
- 按一下執行指令碼 。
若要以程式化方式執行指令碼,請透過以下方式使用 API 授與:
-
script:execute以啟動指令碼。 -
script:read以擷取其執行狀態、記錄或輸出。
傳送帶有HTTPPOST要求。要求主體必填。將執行階段輸入定義為字串值的 JSON 屬性,或者如果指令碼不需要輸入,則傳送空的 JSON 物件 (X-Version: 2026-01-01標頭的POST /scripts/{scriptId}/execution的 {})。
端點傳回202 Accepted以及OperationLocation。輪詢該 URL,直到操作達到Completed、失敗或取消為止。操作的resourceUrl可識別產生的指令碼執行。
指令碼記錄檔包括標準輸出、標準錯誤和執行詳細資料。
如需更多資訊,請參閱 Workiva 開發人員 Scripting API Overview。
若要在 Workiva 檔案中執行指令碼,您需要按照以下步驟操作:
在文件、試算表或簡報的「自動化」面板中,建立新的自動化,並選擇Manual Execution 作為觸發程序。
新增執行指令碼 動作,選取您要執行的指令碼,並選擇性地定義授權哪些使用者或角色/職務執行該指令碼。
注意: 只有指定的使用者才能看到並能夠執行檔案中的自動化。
進一步了解使用自動化執行指令碼 。
建立練習腳本
在您的網站上建立即時指令碼之前,我們建議您在指令碼編輯器中建立練習指令碼。這將有助於您在處理實時資料前熟悉流程。
按照以下步驟創建一個簡單的腳本,計算貨幣的時間值:
- 從首頁,按一下+ 建立 => 腳本 。
- 在右側輸入指令碼的名稱和簡短說明。
- 移至畫面中間的指令碼編輯器,刪除任何現有的指令碼。您應該有一個空白的畫布。
-
將此程式碼貼上編輯者:
"import os, sys # https://www.investopedia.com/terms/t/timevalueofmoney.asp # 貨幣時間價值公式 # FV = PV x [1 + (i / n)]^(nxt) # 假設以 10,000 美元的年利率投資 10,000 美元,為期一年。# 該筆資金的未來價值為:# FV = 10,000 美元 x [1 + (10% / 1)] ^ (1 x 1) = 11,000 美元{"annual" : 1, "monthly" : 12, " Quarterly" : 4, "daily" :365} if 'INVESTMENT' not in os.environ: print("無法執行指令碼。缺少投資。") sys.exit() if 'INTEREST_RATE' not in os.environ: print("Cannot run the script. 缺少利率。") sys.exit() if 'COMPOUNDING_PERIOD' not in os.environ: print("Cannot run the script. Compounding period is missing.") sys.exit() if 'YEARS' not in os.environ: print("Cannot run the script. 缺少年數。") sys.exit() compounding_period = os.getenv('COMPOUNDING_PERIOD') if compounding_period not in compounding_periods.keys(): print("Cannot run the script.", compounding_period," is not a valid period") sys.exit() investment = int(os.getenv('INVESTMENT')) interest_rate = float(os.n = compounding_periods[compounding_period] FV = investment * pow((1 + ((interest_rate/100) / n)),n * years) print("Assume a sum of",investment, "is invested for",years, "year(s) at",\ interest_rate,"% interest compounded on",compounding_period, "basis.") print("The future value of that money is:") print(FV) - 按一下左上方的Run Script 。
- 按一下+Add Variable ,然後輸入您想使用的任何參數。
- 按一下Run Script 以完成。
現在可以在螢幕底部的Output 面板檢視腳本結果。
如何獲得 Workiva Scripting 的支援
如對 Workiva Scripting 有任何疑問,請聯絡Workiva Support 。Workiva 支援人員可以提供指令碼平台行為方面的協助,但無法編寫或調試自訂 Python 程式碼。
您還可以瀏覽支援中心的Workiva 指令碼部分以了解更多資訊,包括指令碼的基礎知識、建立和管理指令碼、範例、疑難排解和最佳做法。
這些資源將幫助您開始使用 Workiva Scripting。如需其他說明,請造訪 Workiva API 社群或 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 規格產生的用戶端程式碼,然後將相同的套件上傳到需要的每個指令碼。這讓您可以在一處維護通用程式碼,並在不同程式碼之間重複使用,而不是在每個程式碼中復制重複。
如需建立和上傳相依性的步驟,請參閱支援的指令碼庫和相依性。