Workiva Scripting 為在 Workiva 軟體上運行 Python 程式碼提供了一個靈活、安全的平台。本文涵蓋您在建立腳本時可能遇到的一些較常見情況。
對於此處未涵蓋的問題,請查看我們的其他 Scripting 文章 或訪問Workiva APIs & Scripting 社群。
備註: 目前僅可透過自訂 Workiva 使用腳本。深入了解。
管理和權限問題
自動化中沒有出現執行指令碼動作
這表示您不具備執行此指令碼所需的角色。請聯絡您的工作區管理員,指派適當的指令碼角色 。
如果分配了所需的角色,但動作仍不可用,請確認在該特定工作區中已啟用腳本功能。
Workiva 腳本連接器在 Chains 中不可用
這表示您的工作區尚未啟用 Workiva Scripting 連接器。請聯絡我們 以啟用它。
工作區管理員看不到任何指令碼角色
這表示您的工作區尚未啟用指令碼功能。請聯絡我們 將其啟用。
Workiva腳本連接器和命令問題(鏈)
命令執行啟動,但腳本無法執行
確認您的工作區已啟用指令碼功能。如果沒有,聯絡我們 將其啟用。
如果您已確認啟用腳本,則Workiva Scripting 連接器 的整合使用者可能未指定必要的角色。請聯絡您的工作區管理員,以指派適當的Scripting 角色 。您還應該驗證整合使用者是否有權限存取該命令所啟動的指令碼。
指令仍在執行中,但指令碼執行意外停止
請確認未在此指令之外取消指令碼的執行。執行記錄可以在腳本編輯器的Properties 面板中找到,或透過Scripting Prototype API endpoints 擷取。
如果不是這個問題,請確定腳本的執行並未達到允許的最大 RAM 使用量 (請參閱Scripting Limits)。您可以在程式碼中報告記憶體的使用情況。
我們在下面附上一個範例,說明如何使用tracemalloc 來報告記憶體使用情況,這個範例來自Python 標準函式庫 。
# 匯入模組
import tracemalloc
# 要監控記憶體的代碼或函式
#
def app():
lt = []
for i in range(0, 100000):
lt.append(i)
# 開始監控
tracemalloc.start()
# 函式呼叫
app()
# 顯示記憶體
print(tracemalloc.get_traced_memory())
# 停止函式庫
tracemalloc.stop()
腳本執行也有最大執行時間 (請參閱Scripting Limits);請確認腳本執行未達此限制。
最後,確認腳本程式碼不包含 以下函式:
- quit()
- exit()
- sys.exit()
- os._exit()
這些函式與產生 SystemExit 異常的功能幾乎相同,Python 解譯器藉此退出。
指令與腳本執行不同步
當命令完成而腳本繼續執行時會發生這種情況,反之亦然。
如果命令在腳本執行前完成,請確定命令超時 大於腳本執行時間 (請參閱Scripting Limits 了解最大腳本執行時間)。
如果指令碼的執行時間比指令碼的執行時間早了幾秒鐘,這可能是腳本系統在腳本執行完成後處理資訊所造成的預期延遲。指令只有在整個過程完成後才會報告完成。
腳本編輯器
匯入函式庫無法運作
Workiva Scripting 支援Python 的標準函式庫 開箱即用,以及從Python Package Index 取得的元件 (更多資訊請參閱Supported Workiva Scripting libraries and dependencies )。可能不支援需要額外安裝的 PyPI 元件。
請確定您要匯入的函式庫是 Python 標準函式庫或 Python 套件索引的一部分。如果它是後者的元件,請確定不需要額外安裝。