跳轉到
版本 v1.0.25

程式碼

程式碼 (Code) 任務讓你直接在工作流程 (Workflow) 的執行環境中跑一段 Python 程式碼。和 Lambda 任務(呼叫外部 AWS 函式)不同,這個任務會在平台內部即時執行你貼上的程式碼,適合做小型資料轉換、計算衍生欄位或寫一段內建任務不好表達的處理邏輯。

這頁能幫你做什麼

  • 用一段 Python 程式碼即時處理、轉換上一步傳來的資料。
  • 計算總計、整理欄位、做條件判斷等小型邏輯,不必另外部署到 AWS。
  • 在正式抽成 Lambda 或自訂工具之前,快速試做原型。

開始前

需要會寫一小段 Python

這個任務要求你提供一個名為 handler 的 Python 函式。它接收一筆資料、處理後回傳結果。若不熟悉 Python、只想原樣傳遞或在傳遞時補欄位,可改用 Pass 任務

操作步驟

  1. 在工作流程編輯器中新增一個程式碼任務(如何新增請見 任務使用指南)。

    程式碼任務設定面板

  2. 點選節點,右側開啟設定表單,停在「設定」分頁。

  3. 在「名稱」欄位為這個步驟取一個好辨識的名字。
  4. 在「執行環境」選擇要用「安全模式」還是「進階模式」(預設未選,見下方說明)。

    「執行環境」下拉展開後列出的選項卡:非管理員帳號只會看到「安全模式」這一張

    上圖是下拉點開之後的樣子。以非管理員帳號登入時清單裡只有「安全模式」一張選項卡,看起來像沒東西可選,這是正常的(見下方權限說明),不是你點錯地方。

  5. 選定執行環境後,下方才會出現「程式碼」與「資料」欄位。在「程式碼」編輯器裡撰寫你的 handler 函式——欄位不是空的,平台已經預帶一份骨架(含一行提醒函式必須叫 handler 的註解,以及一個接收 data、回傳結果的空函式),照著改最快;不會寫 Python 也可以用「產生」()按鈕請系統代寫(見下方用「產生」讓系統幫你寫程式碼)。

    選定「安全模式」後出現「程式碼」「資料」欄位與「產生」鈕的狀態

  6. 視需要在「資料」欄位指定要傳進 handler 的輸入(可用 JSONPath 從上一步取值,路徑寫法見 JSONPath 語法)。

  7. 設定「下一個狀態」。
  8. 可用表單上方的「測試任務」按鈕()試跑,確認輸出符合預期。

完整欄位說明

設定分頁

欄位 必填 預設 說明
名稱 這個步驟在工作流程中的識別名稱,須在同一工作流程內唯一。詳見 任務通用設定
執行環境 空白(未選) 選擇程式碼的執行模式。預設未選任何模式,需先選「安全模式」或「進階模式」,下方的「程式碼」「資料」欄位與「產生」鈕才會出現。兩者在功能、效能與安全性上不同,見下方「執行環境選項」。
程式碼 要執行的 Python 程式碼。必須定義一個名為 handler 的函式,由它接收輸入資料並回傳結果。相依欄位:先選定「執行環境」後才會出現。不會寫 Python 時,可用「產生」()鈕以文字描述請系統代寫,見用「產生」讓系統幫你寫程式碼
資料 {}(空 JSON 物件) 要傳進 handler 處理的資料。欄位一出現就預帶一個空物件 {},不是空白。可填固定 JSON,也可把滑鼠移到欄位上、打開標籤右側出現的「JSONPath」開關從工作流程輸入動態帶入(開關平常隱藏,滑鼠移開就消失,見 任務通用設定)。維持 {} 代表不額外指定資料。相依欄位:先選定「執行環境」後才會出現。
下一個狀態 這步完成後要前往的下一個步驟。詳見 任務通用設定
附註 空白 給這個步驟的備註說明,不影響執行。

用「產生」讓系統幫你寫程式碼

「程式碼」欄位旁有一顆「產生」按鈕()。它是給不會寫 Python 的人用的:用中文描述你要做什麼,系統就產生對應的 handler 函式

  1. 點「產生」,會跳出一個對話框,裡面有三個欄位:

    欄位 必填 說明
    描述 用白話寫你要這段程式碼做什麼,例如「把每筆訂單的單價乘數量加總,回傳小計與品項數」。寫得越具體,產出越接近你要的。
    輸入結構 這段程式碼會收到的資料長什麼樣(JSON 結構)。填了它,產生出來的程式碼才知道欄位名稱。
    輸入範例 一筆實際的輸入資料範例,作用同上,用真實資料比描述結構更好懂。
  2. 按對話框的送出鈕,按鈕會變成「產生中...」;完成後產生的程式碼會直接覆蓋「程式碼」欄位裡原本的內容

產生會蓋掉你原本寫的程式碼

「產生」不是在原有內容後面附加,而是整個取代。如果欄位裡已經有你自己改過的程式碼,先用編輯器工具列的複製鈕()備份一份再產生。產生出來的結果也務必按「測試任務」按鈕()跑一次確認,它是模型寫的,不保證正確。

執行環境選項

「執行環境」下拉選單預設未選任何模式,有兩個選項可選:

選項 說明
安全模式 在受限制的 Python 沙箱中執行,僅允許基本語法與內建函式,禁止網路請求、系統指令與檔案存取等高風險操作。適合資料清洗、格式轉換等常見處理,執行較安全穩定,但功能受限。
進階模式 在完整的 Python 執行環境中執行,支援安裝與使用外部套件、進行網路請求、檔案系統操作等進階功能。適合需要高度客製化或整合外部資源的情境,但可能帶來安全風險與不穩定,請確認程式碼來源可信。僅管理員可選

「進階模式」僅管理員看得到

「執行環境」下拉只會對管理員帳號列出「進階模式」。若你的下拉只有「安全模式」一個選項,代表目前帳號不是管理員,這是正常的權限限制,不是故障。需要進階模式請洽管理員。

安全模式到底允許哪些套件?

平台沒有在畫面上列出白名單,實際可用的內建函式與套件以執行環境的沙箱設定為準。實務做法是先按「測試任務」按鈕()跑一次:若程式碼用到被擋掉的東西,測試輸出的 errors 欄位會直接告訴你是哪一行、哪個名稱不被允許,再據此改寫(例如把網路請求改成用 HTTPS API 任務 做、把檔案存取改成用儲存庫資源)。需要沙箱以外的套件時請洽管理員改用「進階模式」。

建議優先用「安全模式」

「進階模式」不會沙箱化你的程式碼。只有在程式碼完全可信、且安全模式缺少所需套件或功能時,才改用進階模式。

執行設定(摺疊區塊)

展開「設定」分頁底部的「執行設定」可看到下列共用欄位,完整說明見 任務通用設定

欄位 必填 預設 說明
上傳輸出至外部記憶體 關閉 開啟後這步的輸出改存到外部記憶體,適合輸出資料量很大時使用。
在任務開始階段開啟即時輸出串流 關閉 開啟後,任務開始時把任務定義以串流方式即時送到執行頁面顯示。
在任務結束階段開啟即時輸出串流 關閉 開啟後,任務結束時把結果以串流方式即時送到執行頁面顯示。
錯誤時中止 開啟 開啟(預設)代表這步出錯時整個工作流程中止;關閉後改用下方「預設輸出」繼續往下走。
預設輸出 只在關閉「錯誤時中止」時出現,指定出錯時要改用的替代輸出值。 它展開後是一組英文標籤的子欄位Errors + 這個任務的輸出欄位),見 預設輸出的子欄位

輸入與輸出、錯誤處理

切到「輸入與輸出」、「錯誤處理」分頁可調整資料流與重試/捕捉規則,皆為各任務共用設定,完整說明見 任務通用設定

實際範例

把訂單明細加總,計算小計與品項數量。

  • 執行環境:安全模式
  • 資料$.order
  • 程式碼
def handler(data):
    items = data.get("items", [])
    subtotal = sum(i["price"] * i["quantity"] for i in items)
    return {
        "order_id": data["order_id"],
        "subtotal": subtotal,
        "item_count": sum(i["quantity"] for i in items),
    }

當這步收到:

{
  "order": {
    "order_id": "ord-123",
    "items": [
      {"price": 49.99, "quantity": 2},
      {"price": 19.99, "quantity": 1}
    ]
  }
}

handler 會回傳 order_idsubtotal(119.97)與 item_count(3),交給下一步使用。

下一步