🐬【Spotfire Automation 無法執行?完整排錯指南】從 0 到找出原因(含 Log 位置 + 常見錯誤
📌 前言
很多人在使用 TIBCO Spotfire 時會遇到一個很奇怪的問題:
👉 在本機(Spotfire Analyst)跑得好好的
👉 放到 Automation(排程)就「完全不動」或直接失敗
這篇文章會用工程師角度 + 白話解釋,帶你搞懂:
- 為什麼 Automation 跑不起來?
- 哪些地方最容易踩雷?
- Log 要去哪裡看?
- 怎麼快速定位問題?
🧠 為什麼 Automation 會失敗?(核心觀念)
👉 重點一句話:
Automation 是在「伺服器」跑,不是在你電腦跑
所以會出現這些差異:
| 項目 | 本機(OK) | Automation(容易壞) |
|---|---|---|
| 檔案路徑 | 你有權限 | ❌ 可能沒權限 |
| 套件 | 已安裝 | ❌ 沒裝 |
| 資料連線 | 可用 | ❌ 不存在 |
| 頁面/物件 | 一樣 | ❌ 可能不同 |
| 使用者 | 你本人 | ❌ 系統帳號 |
❌ 常見 8 大錯誤(新手必踩)
❶ 路徑寫法錯誤(最常見)
錯誤示意(不要這樣寫):
folder = "C:\data\report\weekly"
👉 問題:\d、\r
會被當成特殊符號
✅ 正確寫法(推薦)
folder = r"C:\data\report\weekly"
或
folder = "C:\\data\\report\\weekly"
❷ 沒有寫入權限(C:\ 很常被擋)
Automation 不是用你帳號執行,而是用系統帳號。
👉 常見錯誤:
Access denied
Cannot create directory
✅ 解法
改成:
-
公司共享磁碟(例如
\\server\share) - 或 IT 開權限資料夾
❸ 自訂 API / 套件不存在
很多人會用自己公司寫的工具,例如:
CustomAPI.runQuery(...)
👉 問題:
- Server 沒有這個套件
- DLL 沒部署
🔥 典型錯誤
NameError: CustomAPI is not defined
❹ 資料來源名稱不同
例如你寫:
connection = "DB:prod"
👉 Server 上可能叫:
DB:production
🔥 常見錯誤
Data source not found
Login failed
❺ 頁面 index 錯誤
錯誤寫法:
page = Document.Pages[2]
👉 Server 上頁面順序可能變了
✅ 改成用名稱
page = Document.Pages["Dashboard"]
❻ 找不到視覺元件(Visual)
錯誤寫法:
chart = None
for v in page.Visuals:
if v.Title == "Sales Chart":
chart = v
chart.As[TablePlot]() # ⚠️ 如果沒找到會爆
✅ 正確寫法(加防呆)
chart = None
for v in page.Visuals:
if v.Title == "Sales Chart":
chart = v
if chart is None:
raise Exception("找不到指定圖表")
table = chart.As[TablePlot]()
❼ 匯出功能在 Automation 不支援
有些在 Analyst 可以做:
exportPDF(...)
👉 Automation 可能會失敗,原因:
- 權限不足
- Report 物件不同
- Web Player 限制
❽ 沒有錯誤處理(最致命)
如果你沒有 try/catch:
👉 一旦錯誤 → 整個 job 停掉
👉 Log 只看到「失敗」
✅ 建議寫法
import traceback
try:
print("開始執行任務")
# 模擬邏輯
x = 10 / 0
except Exception as e:
print("錯誤發生:", str(e))
print(traceback.format_exc())
raise
📂 Log 在哪裡看?(超重要)
🥇 第一優先:Automation Job 執行紀錄
👉 這是最重要的!
你會看到:
- print 輸出
- 錯誤訊息
- 執行時間
- stack trace
🔍 要找的關鍵字
ERROR
Traceback
NameError
Access denied
🥈 Server Log(進階)
如果 Job log 看不出來,再看系統 log:
1️⃣ Server log(Tomcat)
通常包含:
- 登入問題
- DB 連線
- 系統錯誤
2️⃣ Node Manager log
👉 很重要(Automation 常在這跑)
會看到:
- 檔案權限
- 腳本執行狀況
- 記憶體錯誤
3️⃣ Automation 專用 log
有些環境會有:
automation.log
🧪 實務 Debug 流程(工程師用)
照這個順序排:
Step 1️⃣ 先看 Job log
👉 90% 問題在這就找到
Step 2️⃣ 確認這 4 件事
- 路徑正確
- 有寫入權限
- API 存在
- Data source 正確
Step 3️⃣ 印出所有資訊
for p in Document.Pages:
print(p.Title)
Step 4️⃣ 加 Exception log
print(traceback.format_exc())
🎯 總結(給工程師的重點)
👉 Automation 失敗不是因為「程式錯」
而是因為:
環境不同
✔️ 最常出問題 TOP 3
- 路徑錯誤(反斜線)
- 權限不足(C:\)
- 自訂 API 不存在
💡 延伸建議
如果你要做穩定的 Automation:
- 不要用本機路徑
- 不要用自訂 API(除非有部署)
- 全部寫 try/catch
- 所有物件都要防呆
- 所有 log 都要印出來
留言
張貼留言