註: 目前僅可透過自訂 Workiva 設定腳本。深入了解。
腳本設定與概述
腳本通常如何使用?
Workiva Scripting 可以自動執行許多可重複的耗時任務,否則這些任務將需要手工完成。一些常見的用例包括零行抑制、報表佈局,以及在多個文件中應用自訂格式。
因此,脚本可以广泛地适应许多业务需求。程式碼是您自己的;您如何使用程式碼,主要取決於您的程式碼開發人員、工作區設定,以及您業務中目前的手動流程數量。
是否有任何腳本限制?
是的,Workiva 為 Workiva Scripting 和腳本 API 強制執行一些限制。
進一步了解指令碼限制.
如何從 Chains 觸發腳本?
這需要 Workiva Scripting 連接器。
請參閱以下文章以瞭解更多資訊:
Workiva Scripting 是否符合 Fedramp 規範?
絕對是的。在 Workiva,安全性是我們的首要任務,我們已經建立了一個基礎結構,保證您的代碼運行既安全又高效。
如何保護對腳本的存取?
有幾種方法可以防止未經授權的使用者存取您的程式碼:
- 為授權使用者建立專屬工作區或組織 :為授權使用者建立工作區,甚至整個組織,是最安全的選擇。例如,合作夥伴可在您的組織中為 Workiva Scripting 創建一個工作區,並讓客戶從他們自己的組織中執行腳本。
- 使用角色 :Workiva 的腳本角色 (腳本檢視器、腳本運行器和腳本編輯器)是分層的,因此使用者只能存取其工作所需的腳本。例如,Script Runner 角色允許使用者執行腳本,但不能存取任何程式碼。
- 使用權限 :可以在檔案層級限制腳本檔案,以便只有特定使用者可以編輯或檢視您的程式碼。
瞭解有關scripting 角色和權限的更多資訊 。
有沒有腳本程式允許的 IP 清單?
有,腳本程式允許的 IP 包括這裡 。
是否有可用的腳本庫?
我們收集了一些範例腳本 供您使用。這些腳本也可以使用上一個問題中連結的文章來手動建立。
使用指令碼編輯器
如何管理指令碼版本?
目前,Workiva 只存储脚本的最新版本。
您可以在 Workiva 中创建脚本文件的副本,并将它们组织到文件夹中,但我们建议您使用单独的版本控制系统 -- 特别是当您拥有企业版本控制系统时。
如何將 Workiva 程式碼與企業版本控制系統 (例如 GitHub) 同步?
Workiva Scripting API 提供了源管理端點,用戶可在此檢索腳本的最新版本或將腳本更新為較新的副本。Workiva 目前不提供腳本檔案與您的企業版本控制系統(例如 Gitlab、Github、SVN)之間的自動同步。
如何從腳本存取 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 腳本包裝成庫,並在多個腳本中重複使用程式碼。目前最好的方法是複製可重複使用的程式碼,並視需要貼到腳本中。
使用自動化的指令碼
我可以執行託管在其他工作區、組織或環境 (亞太地區、歐盟、美國) 的指令碼嗎?
Workiva 中的automations 功能 只能在文件所在的同一工作区中执行脚本。但是,Workiva Scripting connector 或Workiva Scripting API 可用于执行托管在另一位置的脚本。
如果使用腳本 API,您必須在主工作區中建立並執行一個腳本,其唯一目的是呼叫 Scripting API 並在次工作區中執行腳本。
我可以在執行指令碼時傳送執行時輸入/參數嗎?
目前,自動化功能不允許在執行指令碼時,將執行時輸入的內容傳送到指令碼。
自動化會傳送哪些元資料到執行的指令碼? 是否傳送工作區 id?
從自動化執行腳本時,唯一傳送的參數是設定自動化的文件 ID。
如何從腳本執行中存取 Workiva 和非 Workiva 系統的憑證?
從自動化執行腳本時,唯一的選擇是在程式碼本身硬體編碼憑證。
同一個指令碼可以從兩個或多個檔案同時執行嗎?
可以,一個指令碼可以從同一個檔案或多個檔案同時執行。
從鏈中使用指令碼
我可以執行託管在其他工作區、組織或環境 (APAC, EU,US) 的指令碼嗎?
是的,託管在一個工作區的腳本可以由託管在不同工作區、組織或環境的連鎖執行。
要做到這一點,連鎖中使用的Workiva Scripting connector 必須設置為在主機工作區中創建的 API grant,且使用的腳本/IAM URL 必須對應到正確的工作區。
請參閱以下文章以瞭解更多資訊:
相同的腳本可以從兩個節點同時執行嗎?
同一個 Chain 和/或多重 Chain 中的多個節點可以同時執行相同的指令碼。
如何在其他連鎖節點中使用指令碼的輸出?
Run Script 指令 允許您為每個產生 JSON 的輸出輸入樣本有效載荷,然後可以在其他節點中使用。
是否可以透過腳本中的參數在連鎖中建立時間檔案?
只要二進位檔案不超過 128KB,就可以設定為參數。
API 和程式庫
支援哪些 API 和程式庫?
Workiva Scripting 目前支援
- Workiva 公共 API
- 非 Workiva API
- Python 標準函式庫
- Python 套件索引 (PyPI)
對其他語言的支援仍在考慮中,並可能在未來實現。
瞭解更多:支持的 Workiva Scripting 庫和相依性
Workiva Scripting 使用哪個版本的 Python?
Workiva 指令碼目前支援使用 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 Platform API 的 OAS 檔案,並生成用戶端程式庫 。
是否有特定於腳本的 API 可用?
腳本 API 端點 可在Workiva 的原型平台 API 中作為原型端點使用。
我如何為 Workiva Public APIs 建立和檢視 API 授權?
您需要按照這裡的說明 獲得一個用戶端 ID 和秘密。
如何使用 Python 授權進入 Workiva 公共 API?
以下程式碼片段會呼叫 IAM 服務以產生存取標記,然後用於驗證 Scripting 原型端點。它會取得 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.dataRes = requests.get(SCRIPTING_API_URL, headers = {'Authorization': accessToken}) print(json.loads(dataRes.text))
如何使用 Python 更新儲存格的格式?
Update Sheet Content 原型端點允許使用 Python 程式碼更新儲存格的格式。
我可以讀/寫或上傳儲存在 Workiva 中的非 Workiva 檔案嗎?
目前,還沒有可用於讀/寫或上傳儲存在 Workiva 中的非 Workiva 檔案的端點。
我可以程式化地建立和管理自動化嗎?
目前沒有可用於程式化建立或管理自動化的端點。