🐬【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

  1. 路徑錯誤(反斜線)
  2. 權限不足(C:\)
  3. 自訂 API 不存在

💡 延伸建議

如果你要做穩定的 Automation:

  • 不要用本機路徑
  • 不要用自訂 API(除非有部署)
  • 全部寫 try/catch
  • 所有物件都要防呆
  • 所有 log 都要印出來

留言

這個網誌中的熱門文章

🔍Vue.js 專案錯誤排查:解決 numericFields is not defined 與合併儲存格邏輯最佳化

🖥️遠端桌面連線完整新手指南:Windows RDP、Chrome Remote Desktop、AnyDesk、TeamViewer 一次搞懂

如何在 Word 插入漂亮的程式碼區塊—使用Editor.md