🐬Spotfire Automation Services 教學:為什麼排程「找不到 D 槽 DXP」?以及如何正確把報表放進 Automation 執行

前言:你以為是「程式碼問題」,其實是「系統位置」問題

很多人第一次做 Spotfire 報表排程會遇到這種情況:

  • 手動在電腦開 DXP 一切正常

  • 但放到 Automation Services 後,報表不跑、檔案不輸出

  • 明明 DXP 路徑就在:

    • D:\...\xxx.dxp
      卻一直開不到

對新手來說很困惑:

「我檔案明明在那裡啊,為什麼 Automation 找不到?」

工程師的答案其實很簡單:

Automation Services 是在 伺服器(Server)上跑,它看不到你的電腦 D 槽。


核心觀念:Automation Services 跑在 Server,不跑在你電腦

用最白話的比喻

你在家裡電腦桌面有一份檔案,
但你叫公司機房裡的一台伺服器去開「你家桌面的檔案」——當然開不到。

同理:

  • 你看到的 D:\xxx.dxp 是你「本機」的 D 槽

  • Automation Services 看的世界是「伺服器」

  • 兩者不在同一台機器

所以「正確方式」只有兩種:

  1. 把 DXP 放到 Spotfire Library(最標準)

  2. 或放到 Server 看的到的 UNC 網路共享路徑(視公司規範)


為什麼你在 Tools 找不到 Register Script?(Spotfire 11 常見)

很多人會照教學找:

  • Tools → Register Script

  • 或 Add-ins / Extensions

結果發現完全沒有這些選項,甚至 Options 裡也找不到 Add-ins。

這通常不是你操作錯,而是企業環境常見的「功能控管」:

  • 公司可能在 Spotfire 11 停用/移除 IronPython Scripting 功能

  • 或用 Feature Control 限制 Script 編輯

  • 導致你可以 Editing、可以加計算欄位
    但就是看不到 Register Script

對新手的結論

如果你的環境沒有 Script 功能,你仍然能做 Automation 排程,但功能會受限(通常只能匯出整份報表 PDF/圖片等)。


正確做法:把 DXP 放到 Library,再用 Job Builder 建 Task 流程

Step 1:把 DXP 存到 Spotfire Library

在 Spotfire Analyst 中:

  1. 開啟你的報表(DXP)

  2. File → Save As → Library

  3. 存到一個共用或你有權限的資料夾,例如:

    • /Shared/Reports/

  4. 保存完成後,你的報表就變成「伺服器也看得到的檔案」

✅ 這一步完成,Automation 才有機會開啟 DXP。


Step 2:在 Automation Services Job Builder 建排程任務

在 Job Builder 中,你會看到「任務清單是空的」的畫面。
新手最容易卡在這裡:以為開了 Job Builder 就能跑。

其實你必須「加 Tasks」,Automation 才知道要做什麼。

一個最小可跑的 Job(標準模板)

通常會包含 4 個步驟:

  1. Open Analysis:打開 DXP(從 Library)

  2. Set Document Properties:設定參數(日期、條件、輸出路徑…)

  3. Export:匯出 PDF/圖片/Excel

  4. Close Analysis:關閉報表


Step 3:什麼是 Document Properties?為什麼要設它?

如果你報表內有:

  • 起訖日期

  • 篩選條件

  • 變數控制顯示內容

  • 匯出檔名/輸出資料夾

工程師通常會把這些做成「Document Properties」,
然後 Automation 在跑 Job 時,先把這些參數填好,再匯出。

範例:在 Job 裡設定參數

  • P_START_DATE = 2025-01-01

  • P_END_DATE = 2025-02-01

  • P_OUTPUT_ROOT = \\fileserver\share\reports


重要提醒:輸出路徑不要用 C:\ 或 D:\

Automation 在 Server 上跑,所以:

  • C:\report\... 是 Server 的 C 槽

  • D:\report\... 是 Server 的 D 槽

不一定存在,也常沒有寫入權限。

最穩的是用公司檔案伺服器的 UNC 路徑:

  • \\fileserver\share\report-output\...

並確保 Spotfire Server 的服務帳號有寫入權限。


什麼情況一定需要 Script?(例如拆多個 CSV)

如果你的需求是:

  • 依某個欄位(例如 Device / Lot)拆成多個檔案

  • 動態組 SQL

  • 逐筆迴圈匯出

這些通常超過 Automation 的內建能力,會需要 Script 來做迴圈與資料處理。

示意程式碼:迴圈匯出多檔(僅概念)

# 示意:從資料表取出分類清單,再逐一匯出成多個檔案
categories = get_unique_values("DATA_TABLE", "CATEGORY_COL")

for c in categories:
filtered_rows = select_rows("DATA_TABLE", "CATEGORY_COL", c)
export_csv(filtered_rows, r"\\server\share\output\{}.csv".format(safe_name(c)))



常見錯誤總整理(新手最常踩的坑)

1) 用本機路徑開 DXP

D:\...\report.dxp
✅ 應改存到 Library:/Shared/.../report.dxp

2) 輸出到本機 C:\ 或 D:\

C:\export\...
✅ 改用 UNC:\\fileserver\share\...

3) 以為 Job Builder 開了就會跑

❌ 沒加 Tasks
✅ 必須 Open → Set Properties → Export → Close

4) 找不到 Register Script

✅ 多半是企業環境停用 scripting
✅ 可以先用「不含 script 的 export 排程」跑起來
✅ 需要拆檔再請管理員/同事協助開功能


結語:Spotfire 排程的關鍵不是程式,而是「跑在哪裡」

Spotfire 的 Automation Services 常被誤會成「在你電腦幫你點報表」。
但工程師的理解是:

它是一個「伺服器端的自動化機器人」
它只能看到 Server 能看到的檔案、資料與路徑。

所以只要你掌握三個原則:

  1. DXP 放 Library

  2. 輸出走 UNC

  3. Job 用 Tasks 串起來

你就能把報表排程跑得又穩又可維護。

留言

這個網誌中的熱門文章

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

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

🔎EF Core 連 Oracle 出現 ORA-00600 [kpp_concatq:2] 的完整排錯指南(含 EF Core ToString/CultureInfo 錯誤)