Make.com 核心工具介紹:Router、Aggregator 與 Iterator 的應用實例

Make.com 核心工具介紹:Router、Aggregator 與 Iterator 的應用實例

本篇 Make.com 的核心工具教學!我們將一步步學習如何使用 Make.com 的三大核心模組:RouterAggregatorIterator,並結合實際案例,幫助您快速掌握自動化流程設計的技巧。


🔀 Router 模組

📌 Router 是什麼?

Router(路由器) 是 Make.com 的一個模組,用來將資料流程分成多條支線。每條路徑可以設定自己的篩選條件(Filter),以便針對不同的資料進行個別處理。

✅ 特點:

  • 分流資料:將資料分配到不同的處理流程。
  • 條件篩選:每條路由可加上條件(Filter)。
  • 順序處理:可設定路由的處理順序。
  • 備援路由:處理不符合任何條件的資料。

🛠️ 如何加入 Router?

方法一:在模組後方新增 Router

  1. 點選任一模組的「Add another module」。
  2. 搜尋 Flow Control
  3. 選擇 Router

方法二:插入 Router 到兩個模組之間

  1. 右鍵點選兩模組間的橋接線(bridge)。
  2. 選擇 Add a router

🔃 設定路由順序(Order Routes)

Router 會依序處理每條路由,而不是同時處理。

設定步驟:

  1. 點選 Router。
  2. 右鍵選擇 Order routes
  3. 拖曳箭頭改變處理順序。
  4. (選擇)勾選 Auto-align arranged with set order 自動整理流程圖。
  5. 點選 Apply

⚠️ 注意:Make 不會處理下一條路由,直到上一條處理完畢。


⚠️ 設定 Fallback Route(備援路由)

若資料不符合任何一條路由的條件,會自動進入 fallback 路由。

設定方式:

  1. 點選欲設定為 fallback 的路由的 Filter。
  2. Mark this route as fallback 設為 Yes
  3. 點選 Save

🔁 Fallback 路由會有特殊箭頭圖示,表示它是最後的處理路線。


🌿 選取整條路由分支(Select whole branch)

想一次複製或刪除整串模組?

  1. 點選 Router 模組的分支路由(三點選單)。
  2. 點選 Select whole branch

這樣可以快速管理整條流程!


💡 實例說明:根據天氣發送 Slack 訊息

✅ 任務:

根據明天的天氣,自動發送 Slack 提醒:

  • ☀️ 天氣熱:傳送「穿短褲」。
  • ❄️ 天氣冷:傳送「穿外套」。
  • 🌥️ 其他天氣:傳送「待在家比較好」。

📈 流程設計:

  1. 使用 Weather 模組 抓取天氣資料。
  2. Router 模組分成三條路由:
    • Hot Route → 條件:溫度 > 28°C → 傳 Slack:「穿短褲」。
    • Cold Route → 條件:溫度 < 15°C → 傳 Slack:「穿外套」。
    • Fallback Route → 其他狀況 → 傳 Slack:「待在家比較好」。

🧩 圖解(簡化版):

[Weather 模組] → [Router]
                        ├── [熱條件 → Slack: 穿短褲]
                        ├── [冷條件 → Slack: 穿外套]
                        └── [Fallback → Slack: 待在家比較好]

📦 Aggregator 模組

📌 Aggregator 是什麼?

Aggregator(聚合器) 是用來將多個資料包(bundles)合併成單一資料包的模組。

它會在一個來源模組操作期間:

  • 收集所有接收到的 bundles。
  • 輸出一個 bundle,裡面是一個 陣列(array),每一個陣列項目對應一個原始 bundle 的資料。

🧩 Aggregator 的基本運作邏輯:

  1. 選定一個來源模組(如:Search、Iterator、Webhook)。
  2. Aggregator 收集來源模組傳來的 bundles。
  3. 合併為一個含有資料陣列的單一 bundle。
  4. 傳送給後續模組處理(例如:打包、上傳、匯出等)。

⚙️ Aggregator 設定說明

✅ Source Module(來源模組)

  • 指定從哪個模組開始收集 bundles。
  • 通常是 IteratorSearch 模組 或其他會輸出多個 bundles 的模組。
  • 選擇來源模組後,來源模組與 Aggregator 模組之間的路由會變成灰色區塊,表示這是聚合區段。

🧮 Group by(分組依據)

您可以依據某個欄位或計算公式將聚合結果分組

每個不同的值會變成一組,Aggregator 將輸出多個 bundle,每個包含兩部分:

  • Key:該組的分組鍵值。
  • Array:該組內所有資料的陣列集合。

📝 範例: 如果用 Group by: user_id,會針對每個使用者分開聚合資料。


🚫 Stop processing after an empty aggregation

預設情況下,即使沒有任何 bundle 被聚合(例如都被過濾掉了),Aggregator 仍會輸出一個空結果。

✅ 若您勾選這個選項,當沒有 bundle 可聚合時,Aggregator 將不會輸出任何結果,流程也會終止。


📦 聚合後的輸出資料存取注意事項:

  • Aggregator 不會輸出來源模組與其之間模組的原始資料
  • 後續模組只能存取 Aggregator 輸出的結果。
  • 若需要存取來源模組的資料,請在 Aggregator 設定中 勾選所需欄位(例如 Array Aggregator 裡的 Aggregated fields)。

💡 實務案例:打包 Email 附件並上傳到 Dropbox

✅ 任務:

從 Email 收信匣中抓取所有附件 → 個別處理 → 打包成 ZIP → 上傳到 Dropbox。

📈 流程設計:

  1. Email 模組:Watch Emails
    • 每封信會包含一個 Attachments[] 陣列。
  2. Iterator 模組
    • 將 Attachments[] 陣列逐一拆成多個 bundle。
  3. Aggregator 模組:Create Archive(建立壓縮檔)
    • 聚合所有附件成一個 ZIP 檔。
  4. Dropbox 模組:Upload a file
    • 上傳 ZIP 檔案至 Dropbox。

🧩 圖解流程(簡化版):

[Email Watcher]
    → [Iterator:拆分附件]
        → [Aggregator:打包成 ZIP]
            → [Dropbox:上傳檔案]

🔁 Iterator 模組

📌 Iterator 是什麼?

Iterator(迭代器) 是一種特殊模組,能夠將一個 陣列(Array)轉換成多個單一 bundle

✅ 每個陣列中的項目都會被拆解成獨立的資料 bundle,逐筆傳送給後續模組。


🛠 如何設定 Iterator?

  1. 拖曳 Iterator 模組至流程中。
  2. Array 欄位 指定要拆解的陣列(例如:Attachments[]Items[])。
  3. 按下 OK 儲存設定。

⚠️ 通常搭配會輸出陣列的模組使用,例如:

  • Webhook(接收 JSON)。
  • Email(接收多個附件)。
  • Search / List 類模組(如 Notion > Search objects)。

📦 Iterator 實例應用:儲存 Email 附件到 Google Drive

✅ 任務:

接收一封包含多個附件的 Email,將每個附件個別儲存到 Google Drive 中。

📈 流程設計:

[Watch Emails]
   → [Iterator:分拆 Attachments[] 陣列]
       → [Google Drive:上傳單一檔案]

🪄 小結

功能 說明
🔁 拆解陣列 將 array 中每筆項目轉換為獨立 bundle
📌 Array 欄位 必填!指定要拆解的陣列欄位名稱
⚠️ 無資料顯示時 手動執行上游模組,即可學習資料結構
💡 搭配應用建議 Email 附件、JSON 陣列、Search 結果…

🔧 範例1:自動處理來自表單的報名資料

🎯 教學目標

學會如何使用 Iterator、Router、Aggregator 模組,將來自表單的報名資料依照條件分類、個別處理,並彙整寄送通知。


📘 使用情境

你正在辦一場研討會活動,報名表單會收到參與者的以下資訊:

  • 姓名、Email
  • 報名場次(如:上午場、下午場)
  • 附件(簡報、文件)
  • 是否需要住宿

你希望系統自動:

  1. 處理每筆報名資料
  2. 根據場次分類寄送對應通知信
  3. 若有多個附件,個別儲存
  4. 將所有報名者依住宿需求分類,產生報告並寄送

🧩 使用模組

模組 用途說明
Webhook 接收報名表單資料
Iterator 拆解報名者附件
Router 依報名場次進行分流
Aggregator 將報名者依住宿需求分組
Gmail / Email / Notion / Google Sheets 作為通知、儲存或報告出口

🛠️ 教學流程設計

[Webhook:接收報名資料]
       ↓
[Iterator:拆解附件 Attachments[]]
       ↓
[儲存附件:如 Google Drive 或 Dropbox]
       ↓
[Router:依照 Session 分流(上午場 / 下午場)]
       ↓
[寄送通知 Email 給對應負責人]
       ↓
[Aggregator:依住宿需求分組報名者]
       ↓
[產出統計報告 / 寄送彙整 Email]

🔁 Iterator 設定

  • 模組:Iterator
  • Array 欄位:Attachments[]
  • 用途:逐一處理每個檔案,例如上傳至雲端硬碟

🔀 Router 設定

  • 模組:Router
  • 分流條件:
    • 上午場 → Session = "AM"
    • 下午場 → Session = "PM"
    • 其他 → fallback route(例如通知人工處理)

每一條分流後都可以加上對應的「寄送信件」模組。


📦 Aggregator 設定

  • 模組:Array Aggregator
  • Source module:Webhook(或 Router 後的處理結果)
  • Group by 欄位:NeedHotel(是 / 否)
  • 輸出格式:依照住宿需求,分成兩個群組,彙整報名者資料

可將結果傳送至:

  • Email 模組:寄出整理報告
  • Google Sheets / Notion:建立分頁式報名清單

🧪 補充 Tips

  • 若報名資料來源為 JSON,可先用 Parse JSON 模組解析並定義資料結構
  • 可使用 Set Variable 模組,保存某些關鍵欄位作為後續通知內容
  • Aggregator 的結果可進一步與 PDF 工具搭配,自動產出報表

🧠 教學重點回顧

功能 工具 效果
拆解每筆附件 Iterator 每個附件獨立上傳
條件分流處理 Router 根據不同 Session 分流
群組報名者 Aggregator 依住宿需求產生彙整資料
通知整合 Email / Slack 自動寄出對應通知或報告

🔗 延伸閱讀 / 官方參考


🔧 範例2:自動處理每日訂單

📦 情境:

從電商後台擷取每日訂單,根據商品類型分流處理,再彙整為每日報表。

✅ 使用模組:

  • API / HTTP 模組(取得訂單)
  • Iterator(逐筆訂單處理)
  • Router(依產品分類路徑)
  • Aggregator(彙整統計資料)
  • Google Sheets / Notion / Email

📰 2. RSS 摘要分類寄送給不同團隊

📦 情境:

從多個 RSS 頻道讀取新文章,根據關鍵字分類寄送到不同部門。

✅ 使用模組:

  • RSS > Watch RSS feed
  • Router(依關鍵字、分類處理)
  • Gmail / Slack 通知
  • Dropbox > Save content(儲存文章附件)

📩 3. 收集客服表單並根據緊急程度分配任務

📦 情境:

將客服表單(如 Typeform)中的資料根據「優先級」自動分派給客服團隊。

✅ 使用模組:

  • Typeform > Watch responses
  • Router(依 Priority 分流)
  • Google Tasks / ClickUp / Trello(產生任務)
  • Gmail / Slack 通知

📋 4. 每週自動寄送整理後的 Notion 資料摘要

📦 情境:

從 Notion 資料庫提取本週內容,依標籤分類,彙整成 Email 總結寄出。

✅ 使用模組:

  • Notion > Search database
  • Iterator(逐筆資料處理)
  • Router(依標籤分類)
  • Aggregator(每類彙整內容)
  • Gmail > Send Email(寄出摘要)

📊 5. 自動收集問卷結果並依部門統整分析

📦 情境:

來自 Google Forms 的問卷回覆,需依受訪者部門分類,再彙整成統計圖表寄出。

✅ 使用模組:

  • Google Forms / Sheets
  • Iterator(逐筆回應)
  • Router(依 Department 分流)
  • Aggregator(各部門分組彙整)
  • Chart 模組或 PDF Generator(產圖)
  • Gmail(寄出報告)

🏷️ 6. 自動歸類收據並產出報帳總表

📦 情境:

拍照上傳的收據透過 OCR 讀取金額與類別,依照報帳類型自動分類並彙總。

✅ 使用模組:

  • Dropbox / Google Drive > Watch files
  • PDF.co / Make OCR 模組
  • Router(依類別:交通 / 餐飲 / 雜支)
  • Aggregator(月度總表)
  • Google Sheets > Append row
  • Slack / Gmail(通知會計)

🏗️ 7. 自動將報名者依地區分配導師

📦 情境:

表單收到報名資料後,依地區自動指派對應導師、寄送通知與建立行事曆事件。

✅ 使用模組:

  • Google Forms / Webhook
  • Router(依地區分流)
  • Google Calendar > Create event
  • Gmail / Slack(雙方通知)

🎁 8. 多語系支援請求的自動處理與轉寄

📦 情境:

收集國際使用者的客服訊息,根據語系自動轉寄給該語言的客服團隊。

✅ 使用模組:

  • Webhook / Chatbot API
  • Router(依語言分流)
  • Gmail > Send email to localized team
  • OpenAI > Translate if needed
  • Notion / Helpdesk 插入回報資料

📦 額外進階模組建議組合(搭配 Router / Iterator / Aggregator)

模組類別 搭配用途
Set Variable 用於過濾條件前儲存必要欄位
Parse JSON 接收 API 資料、配合 Iterator 拆解
Tools > Get variable 與 Aggregator 或 Iterator 搭配取得中間值
Array functions(Map / Reduce) 處理複雜陣列邏輯
Delay / Schedule 加入節奏或延遲觸發通知

🔧 範例3:Telegram AI 助理

以下是一個 Make.com + Telegram Bot + ChatGPT API 的完整場景範例,示範如何利用 Router 依據使用者指令分流,並結合 IteratorAggregator、HTTP 模組與 ChatGPT API,完成三種常見互動:

  1. /image → 回覆生成圖片的 Prompt
  2. /qa → 回答日常生活疑問
  3. /scrape → 爬取指定網址內容,整理後回覆

  1. 準備工作
  2. 建立 Telegram Bot 與 Make.com Webhook
  3. Scenario 基本架構
  4. 使用 Router 分流指令
  5. 各分支詳細實作
    • /image:生成圖片 Prompt
    • /qa:回答日常疑問
    • /scrape:爬取網頁並摘要
  6. 測試與運行
  7. 進階技巧與故障排除

🎯 場景目標

當使用者在 Telegram Bot 輸入指令後,Make.com 自動分流到對應流程:

  • /image:將後續文字當作 Prompt,呼叫 ChatGPT Image API,並將生成提示回傳
  • /qa:將後續文字當作提問,呼叫 ChatGPT Chat API 回答
  • /scrape:讀取指令參數中的網址,爬取該頁面內容、拆解、聚合、最後呼叫 ChatGPT API 做總結,回覆給用戶

1️⃣ 準備工作

  1. 申請 Telegram Bot
    • 在 Telegram 搜尋 @BotFather
    • /newbot → 取得 Bot Token
  2. 申請 OpenAI API 金鑰
  3. 註冊並登入 Make.com
  4. (選用) 建立自己的伺服器或 ngrok,以便於接收 Telegram Webhook

🔧 使用模組一覽

模組類型 模組名稱 功能說明
Telegram Watch updates 監聽 Bot 指令
Flow Control Router 根據 /image/qa/scrape 分流
Text aggregation Set variable 儲存指令參數(Prompt、問題、URL)
ChatGPT API OpenAI > Create image prompt 產生圖片提示
ChatGPT API OpenAI > Chat completion 回答提問、總結爬蟲資料
HTTP HTTP > Make a request 爬取指定網頁原始 HTML
HTML parsing (選擇) HTML > Parse HTML 將 HTML 拆成元素
Iterator Iterator 拆解多段落或多筆元素
Aggregator Array Aggregator 聚合拆解後的多筆文字,形成一段完整文本
Telegram Send a message / Send a photo 回傳給使用者

🛠️ 完整流程圖(簡化)

[Telegram: Watch updates]
       ↓
     [Router]
 ┌─────┼────────┬─────────┐
 │     │        │         │
 │  /image  /qa  /scrape  other
 │     │        │         │
 │     ↓        ↓         ↓
 │ [Set var: prompt]      │
 │     ↓                  │
 │ [OpenAI: Create image] │
 │     ↓                  │
 │ [Telegram: Send Photo] │
 │                        │
 │                 [Set var: question]
 │                        ↓
 │                 [OpenAI: Chat completion]
 │                        ↓
 │                 [Telegram: Send Message]
 │                        │
 │                 [Set var: url]
 │                        ↓
 │                 [HTTP: Request url]
 │                        ↓
 │              [HTML: Parse HTML] (opt)
 │                        ↓
 │                  [Iterator]
 │                        ↓
 │                [Array Aggregator]
 │                        ↓
 │               [OpenAI: Chat completion]
 │                        ↓
 │               [Telegram: Send Message]


2️⃣ 建立 Telegram Webhook in Make.com

  1. 在 Make.com 儀表板點「Create a new scenario」
  2. 搜尋並加入 Telegram > Watch updates 模組
    • 連接你的 Bot Token
    • 設定 Webhook URL(Make.com 會自動生成)
  3. 按下 Run once,完成 Webhook 與 Telegram 的連結

4️⃣ 加入 Router 分流指令

  1. Watch updates 之後,點「+」→ 搜尋 Flow Control > Router
  2. 右鍵 Router → Order routes,依序拖曳成:/image/qa/scrape → fallback
  3. 在每條路由上點 Add a filter,設定三種條件:
    • /image 路由:
      • Telegram.message.text starts with "/image "
    • /qa 路由:
      • Telegram.message.text starts with "/qa "
    • /scrape 路由:
      • Telegram.message.text starts with "/scrape "
    • fallback:不設定,即處理其他未知指令

5️⃣ 各分支詳細實作

🔹 5.1 /image 分支

  1. Set variable 模組
    • Name:prompt
    • Value:{{Telegram.message.text.replaceFirst("/image ", "")}}
  2. OpenAI > Create image prompt
    • Model:dall·e-3
    • Prompt:{{prompt}}
  3. Telegram > Send a photo
    • Chat ID:{{Telegram.chat.id}}
    • Photo URL:{{CreateImage.data[0].url}}
    • Caption:這是根據您的 Prompt「{{prompt}}」生成的圖片

🔹 5.2 /qa 分支

  1. Set variable
    • Name:question
    • Value:{{Telegram.message.text.replaceFirst("/qa ", "")}}
  2. OpenAI > Chat completion
    • Model:gpt-4
    • System prompt:你是生活小幫手,請用親切口吻回答使用者問題。
    • User message:{{question}}
  3. Telegram > Send a message
    • Chat ID:{{Telegram.chat.id}}
    • Text:{{ChatCompletion.choices[0].message.content}}

🔹 5.3 /scrape 分支

註:若抓取的頁面內容量大,可視需求跳過 Parse HTML,直接傳給 ChatGPT 做摘要。

  1. Set variable
    • Name:url
    • Value:{{Telegram.message.text.replaceFirst("/scrape ", "")}}
  2. HTTP > Make a request
    • Method:GET
    • URL:{{url}}
  3. HTML > Parse HTML(可選)
    • HTML:{{HTTP.response.body}}
    • CSS selector:p
  4. Iterator
    • Array:{{ParseHTML.elements}}
  5. Array Aggregator
    • Source module:Iterator
    • Aggregated fields:
      • text{{Iterator.element.textContent}}
    • 不設定 Group by → 全部聚成一個 bundle
  6. OpenAI > Chat completion
    • Model:gpt-4
    • System prompt:請將以下網頁內容整理成段落分明的摘要:
    • User message:{{ArrayAggregator.array | join("\n\n")}}
  7. Telegram > Send a message
    • Chat ID:{{Telegram.chat.id}}
    • Text:{{ChatCompletion.choices[0].message.content}}

6️⃣ 測試與運行

  1. 在 Scenario 中按 Run once
  2. 在 Telegram Bot 中依序輸入:
    • /image 一隻穿著西裝的貓咪
    • /qa 今天天氣怎麼樣?
    • /scrape https://news.ycombinator.com
  3. 確認 Bot 回應是否正確

7️⃣ 進階技巧與故障排除

  • 多行 Prompt:若需要傳送長段文字,搭配 Iterator → Aggregator 拆分再重組,避免超出 Token 限制
  • 錯誤處理:在每條最末加入「Error handler」分支,回覆「發生錯誤,請稍後重試」
  • 快取回應:使用 Set variable 暫存 ChatGPT 回傳結果,多模組重複引用
  • 安全性:若擔心惡意 URL,可在爬蟲前先做 URL 黑白名單過濾

💡 技巧

  • Router 條件可以使用正規表達式 (matches '/image\s+.+')
  • Iterator + Aggregator 是將長文本拆分後再重組,避免一次傳給 ChatGPT 超過 Token 限制
  • 若有重複使用 OpenAI 回應結果,可在 Set variable 中暫存,再多處引用
  • 錯誤處理:在每條分支末端加入 Error handler 分支,回覆「發生問題,請稍後再試」

jungyu: 您是資料科學老師,請由淺入深重新編排本教學

GitHub Copilot: # Make.com 核心工具介紹:從入門到進階

📚 第一部分:基礎概念

Make.com 是什麼?

Make.com 是一個強大的自動化工作流平台,讓你能夠將不同的應用程式和服務連接起來,創建自動化的工作流程(稱為「scenario」)。

主要元素:

  • 模組(Module): 執行特定功能的組件
  • 連接(Connection): 模組之間的資料傳遞路徑
  • Bundle: 在模組間傳遞的資料包
  • 流程(Scenario): 完整的自動化工作流程

📚 第二部分:基礎核心工具

🔄 1. Iterator 模組

最基礎且常用的工具,用於處理陣列資料。

📌 Iterator 是什麼?

Iterator(迭代器) 能夠將一個 陣列(Array)轉換成多個單一 bundle,讓你能逐一處理陣列中的每個項目。

✅ 特點:

  • 將陣列拆分成多個獨立資料包
  • 每個陣列項目變成獨立的 bundle,傳給後續模組
  • 適合處理來自 JSON、Email 附件、搜尋結果等陣列資料

🛠️ 基本設定:

  1. 拖曳 Iterator 模組至流程中
  2. Array 欄位 指定要拆解的陣列(例如:Attachments[]Items[]
  3. 按下 OK 儲存設定

📝 簡單範例:處理 Email 附件

[Watch Emails]
   → [Iterator:分拆 Attachments[] 陣列]
       → [Google Drive:上傳單一檔案]

🧪 問題排解:

若在設定時看不到資料欄位,可能是因為上游模組還沒執行過。解決方法是手動執行上游模組,讓系統學習資料結構。


🔀 2. Router 模組

中級工具,用於資料分流和條件判斷。

📌 Router 是什麼?

Router(路由器) 是用來把資料流程分成多條支線的模組。每條路徑可以設定自己的篩選條件(Filter)來處理資料。

✅ 特點:

  • 分流資料到不同處理流程
  • 每條路由可加上條件(filter)
  • 可設定處理順序
  • 可設定 備援路由(fallback route),處理不符合任何條件的資料

🛠️ 如何加入 Router?

方法一:在模組後方新增

  1. 點選任一模組的「Add another module」
  2. 搜尋 Flow Control
  3. 選擇 Router

方法二:插入到兩個模組之間

  1. 右鍵點選兩模組間的橋接線(bridge)
  2. 選擇 Add a router

🔃 設定路由順序:

  1. 點選 Router
  2. 右鍵選擇 Order routes
  3. 拖曳箭頭改變處理順序
  4. (選擇)勾選 Auto-align arranged with set order 自動整理流程圖
  5. 點選 Apply

⚠️ 設定 Fallback Route:

  1. 點選欲設定為 fallback 的路由的 Filter
  2. Mark this route as fallback 設為 Yes
  3. 點選 Save

🧩 簡單範例:天氣提醒

根據明天的天氣,自動發送 Slack 提醒:

  • 天氣熱:傳送「穿短褲」
  • 天氣冷:傳送「穿外套」
  • 其他天氣:傳送「待在家比較好」
[Weather 模組] → [Router]
                   ├── [熱條件 → Slack: 穿短褲]
                   ├── [冷條件 → Slack: 穿外套]
                   └── [Fallback → Slack: 待在家比較好]

📦 3. Aggregator 模組

進階工具,用於彙整多筆資料。

📌 Aggregator 是什麼?

Aggregator(聚合器) 是用來將多個資料包(bundles)合併成單一資料包的模組,通常輸出為一個陣列。

🧩 基本運作邏輯:

  1. 選定一個來源模組(如:Search、Iterator、Webhook)
  2. Aggregator 收集來源模組傳來的所有 bundles
  3. 合併為一個含有資料陣列的單一 bundle
  4. 傳送給後續模組處理

⚙️ 主要設定選項:

  1. Source Module(來源模組):指定從哪個模組開始收集 bundles
  2. Group by(分組依據):可依據某個欄位將結果分組
  3. Stop processing after an empty aggregation:若勾選,沒有資料時將停止流程

💡 實例:打包 Email 附件並上傳到 Dropbox

[Email Watcher]
    → [Iterator:拆分附件]
        → [Aggregator:打包成 ZIP]
            → [Dropbox:上傳檔案]

📚 第三部分:進階整合應用

🔧 實例:自動處理表單報名資料

🎯 需求:

處理研討會報名表單,根據場次分類、處理附件,並產生住宿需求報告。

🛠️ 流程設計:

[Webhook:接收報名資料]
       ↓
[Iterator:拆解附件]
       ↓
[儲存附件到雲端硬碟]
       ↓
[Router:依場次分流]
       ↓
[寄送通知 Email]
       ↓
[Aggregator:依住宿需求分組]
       ↓
[產出統計報告]

🔄 Iterator 設定:

  • Array 欄位:Attachments[]
  • 用途:逐一處理每個檔案

🔀 Router 設定:

  • 分流條件:
    • 上午場 → Session = "AM"
    • 下午場 → Session = "PM"
    • 其他 → fallback route

📦 Aggregator 設定:

  • Source module:Webhook
  • Group by:NeedHotel(是/否)
  • 輸出:依住宿需求分組報名者資料

🔧 實用應用案例

  1. 自動處理每日訂單:從電商後台擷取訂單,按商品類型分流處理,彙整報表

  2. RSS 摘要分類轉發:讀取 RSS 頻道,根據關鍵字分類發送給不同團隊

  3. 客服表單優先級分配:將客服表單依緊急程度自動分配任務

  4. 自動問卷結果彙整:收集問卷回覆,依部門分類,生成統計報告

  5. 收據自動歸類報帳:OCR 讀取收據金額與類別,自動分類彙總


📚 第四部分:高級整合案例

🔧 Telegram AI 助理實作

運用 Make.com + Telegram Bot + ChatGPT,實現三種互動功能:

  • /image → 生成圖片的 Prompt
  • /qa → 回答日常生活疑問
  • /scrape → 爬取指定網址內容,整理後回覆

🛠️ 完整流程設計:

[Telegram: Watch updates]
       ↓
     [Router]
 ┌─────┼────────┬─────────┐
 │     │        │         │
 │  /image   /qa    /scrape   其他
 │     │        │         │
 │     ↓        ↓         ↓
 │  [處理圖片請求]  [處理問答]  [處理網頁爬取]

🔀 Router 設定:

  1. 在 Router 上設置三個分支條件
  2. 每個分支設置不同的處理流程
  3. 使用 Iterator 和 Aggregator 處理網頁爬取的長文本

📚 小結:工具選擇指南

需求 建議工具 使用時機
逐一處理陣列中的項目 Iterator 當你有多筆資料需要分別處理
根據條件將資料分流 Router 當需要根據不同條件執行不同流程
將多筆處理結果合併 Aggregator 當需要將多筆資料合併成一個報告或檔案
複雜流程 組合使用 將上述工具組合使用,處理複雜業務流程

學習建議:先熟練單一工具的使用,再嘗試組合不同工具創建更複雜的自動化流程!


📚 延伸資源

希望這份教學能幫助你掌握 Make.com 的核心工具,建立高效的自動化流程!

jungyu: 剛剛你的回覆,簡化了原內容,希望教學是基於原內容的完整編排及擴展。

GitHub Copilot: # Make.com 核心工具介紹:由淺入深學習自動化工作流

📚 第一部分:認識 Make.com 基礎

Make.com 是什麼?

Make.com 是一個強大的自動化工作流平台,允許您連接不同的應用程式和服務,創建自動化流程(稱為「scenario」)來處理各種工作任務。

核心元素

  • Module(模組):執行特定功能的組件
  • Connection(連接):模組之間的資料傳遞路徑
  • Bundle:在模組間傳遞的資料包
  • Scenario(情境):完整的自動化工作流程

📚 第二部分:三大核心工具

🔁 Iterator 模組(基礎)

最基礎且常用的工具,用於處理陣列資料。

📌 Iterator 是什麼?

Iterator(迭代器) 是一種特殊模組,能夠將一個 陣列(Array)轉換成多個單一 bundle

✅ 每個陣列中的項目都會被拆解成獨立的資料 bundle,逐筆傳送給後續模組。

🛠 如何設定 Iterator?

  1. 拖曳 Iterator 模組至流程中
  2. Array 欄位 指定要拆解的陣列(例如:Attachments[]Items[]
  3. 按下 OK 儲存設定

⚠️ 通常搭配會輸出陣列的模組使用,例如:

  • Webhook(接收 JSON)
  • Email(接收多個附件)
  • Search / List 類模組(如 Notion > Search objects)

📦 Iterator 實例應用:儲存 Email 附件到 Google Drive

✅ 任務:

接收一封包含多個附件的 Email,將每個附件個別儲存到 Google Drive 中

📈 流程設計:
[Watch Emails]
   → [Iterator:分拆 Attachments[] 陣列]
       → [Google Drive:上傳單一檔案]
📝 Iterator 設定方式:
  • Array 欄位輸入:Attachments[]

每個附件就會變成一筆獨立的資料供下一步使用

🚀 專用 Iterator 模組

有些應用程式提供 預設的 Iterator 模組,讓您不用手動指定陣列欄位:

  • Gmail > Iterate Attachments
  • Slack > Iterate messages
  • Airtable > Iterate records

🧪 問題排解:無法對 Iterator 做資料對應?

問題現象:

👉 在 Iterator 或其後續模組的 對應面板(Mapping Panel) 中,看不到任何欄位,只顯示:

  • Total number of bundles
  • Bundle order position
原因:

上游模組(如 Parse JSON 或 Webhook)尚未執行過,因此無法提供輸出資料結構

✅ 解決方法:
  1. 手動執行上游模組:
    • 點選模組右鍵 > 選擇「Run this module only
    • 或手動啟動整個流程(可先斷開後續模組避免影響)
  2. 完成後,再打開 Iterator 設定面板,您將會看到正確的資料結構
  3. 此時,後續模組也能正確對應輸出的欄位了 🎉

🔀 Router 模組(中級)

中級工具,用於資料分流和條件判斷。

📌 Router 是什麼?

Router(路由器) 是 Make.com 的一個模組,用來把資料流程分成多條支線。每條路徑可以設定自己的篩選條件(Filter)來處理資料。

✅ 特點:

  • 分流資料到不同處理流程
  • 每條路由可加上條件(filter)
  • 可設定處理順序
  • 可設定 備援路由(fallback route),處理不符合任何條件的資料

🛠️ 如何加入 Router?

方法一:在模組後方新增 Router
  1. 點選任一模組的「Add another module」
  2. 搜尋 Flow Control
  3. 選擇 Router
方法二:插入 Router 到兩個模組之間
  1. 右鍵點選兩模組間的橋接線(bridge)
  2. 選擇 Add a router

🔃 設定路由順序(Order Routes)

Router 會依序處理每條路由,並不是同時處理。

設定步驟:
  1. 點選 Router
  2. 右鍵選擇 Order routes
  3. 拖曳箭頭改變處理順序
  4. (選擇)勾選 Auto-align arranged with set order 自動整理流程圖
  5. 點選 Apply

⚠️ 注意:Make 不會處理下一條路由,直到上一條處理完畢。

⚠️ 設定 Fallback Route(備援路由)

若資料不符合任何一條路由的條件,會自動進入 fallback 路由。

設定方式:
  1. 點選欲設定為 fallback 的路由的 Filter
  2. Mark this route as fallback 設為 Yes
  3. 點選 Save

🔁 Fallback 路由會有特殊箭頭圖示,表示它是最後的處理路線。

🌿 選取整條路由分支(Select whole branch)

想一次複製或刪除整串模組?

  1. 點選 Router 模組的分支路由(三點選單)
  2. 點選 Select whole branch

這樣可以快速管理整條流程!

💡 實例說明:根據天氣發送 Slack 訊息

✅ 任務:

根據明天的天氣,自動發送 Slack 提醒:

  • ☀️ 天氣熱:傳送「穿短褲」
  • ❄️ 天氣冷:傳送「穿外套」
  • 🌥️ 其他天氣:傳送「待在家比較好」
📈 流程設計:
  1. 使用 Weather 模組 抓取天氣資料
  2. Router 模組分成三條路由:
    • Hot Route → 條件:溫度 > 28°C → 傳 Slack:「穿短褲」
    • Cold Route → 條件:溫度 < 15°C → 傳 Slack:「穿外套」
    • Fallback Route → 其他狀況 → 傳 Slack:「待在家比較好」
🧩 圖解(簡化版):
[Weather 模組] → [Router]
                  ├── [熱條件 → Slack: 穿短褲]
                  ├── [冷條件 → Slack: 穿外套]
                  └── [Fallback → Slack: 待在家比較好]

📦 Aggregator 模組(進階)

進階工具,用於彙整多筆資料。

📌 Aggregator 是什麼?

Aggregator(聚合器) 是用來將多個資料包(bundles)合併成單一資料包的模組。

它會在一個來源模組操作期間:

  • 收集所有接收到的 bundles
  • 輸出一個 bundle,裡面是一個 陣列(array),每一個陣列項目對應一個原始 bundle 的資料

🧩 Aggregator 的基本運作邏輯:

  1. 選定一個來源模組(如:Search、Iterator、Webhook)
  2. Aggregator 收集來源模組傳來的 bundles
  3. 合併為一個含有資料陣列的單一 bundle
  4. 傳送給後續模組處理(例如:打包、上傳、匯出等)

⚙️ Aggregator 設定說明

✅ Source Module(來源模組)
  • 指定從哪個模組開始收集 bundles
  • 通常是 IteratorSearch 模組 或其他會輸出多個 bundles 的模組
  • 選擇來源模組後,來源模組與 Aggregator 模組之間的路由會變成灰色區塊,表示這是聚合區段
🧮 Group by(分組依據)

您可以依據某個欄位或計算公式將聚合結果分組

每個不同的值會變成一組,Aggregator 將輸出多個 bundle,每個包含兩部分:

  • Key:該組的分組鍵值
  • Array:該組內所有資料的陣列集合

📝 範例: 如果用 Group by: user_id,會針對每個使用者分開聚合資料。

🚫 Stop processing after an empty aggregation

預設情況下,即使沒有任何 bundle 被聚合(例如都被過濾掉了),Aggregator 仍會輸出一個空結果。

✅ 若您勾選這個選項,當沒有 bundle 可聚合時,Aggregator 將不會輸出任何結果,流程也會終止。

📦 聚合後的輸出資料存取注意事項:
  • Aggregator 不會輸出來源模組與其之間模組的原始資料
  • 後續模組只能存取 Aggregator 輸出的結果
  • 若需要存取來源模組的資料,請在 Aggregator 設定中 勾選所需欄位(例如 Array Aggregator 裡的 Aggregated fields)

💡 實務案例:打包 Email 附件並上傳到 Dropbox

✅ 任務:

從 Email 收信匣中抓取所有附件 → 個別處理 → 打包成 ZIP → 上傳到 Dropbox

📈 流程設計:
  1. Email 模組:Watch Emails
    • 每封信會包含一個 Attachments[] 陣列
  2. Iterator 模組
    • 將 Attachments[] 陣列逐一拆成多個 bundle
  3. Aggregator 模組:Create Archive(建立壓縮檔)
    • 聚合所有附件成一個 ZIP 檔
  4. Dropbox 模組:Upload a file
    • 上傳 ZIP 檔案至 Dropbox
🧩 圖解流程(簡化版):
[Email Watcher]
    → [Iterator:拆分附件]
        → [Aggregator:打包成 ZIP]
            → [Dropbox:上傳檔案]

📌 小技巧與注意事項:

  • 使用 Iterator + Aggregator 是處理「多筆資料 → 單一結果」的經典組合
  • 使用 Group by 可依照條件進行多組聚合
  • 記得選擇您要聚合的欄位,否則後續無法讀取內容

📚 第三部分:實務應用案例

🔧 範例1:自動處理來自表單的報名資料

🎯 教學目標

學會如何使用 Iterator、Router、Aggregator 模組,將來自表單的報名資料依照條件分類、個別處理,並彙整寄送通知。

📘 使用情境

您正在辦一場研討會活動,報名表單會收到參與者的以下資訊:

  • 姓名、Email
  • 報名場次(如:上午場、下午場)
  • 附件(簡報、文件)
  • 是否需要住宿

您希望系統自動:

  1. 處理每筆報名資料
  2. 根據場次分類寄送對應通知信
  3. 若有多個附件,個別儲存
  4. 將所有報名者依住宿需求分類,產生報告並寄送

🧩 使用模組

模組 用途說明
Webhook 接收報名表單資料
Iterator 拆解報名者附件
Router 依報名場次進行分流
Aggregator 將報名者依住宿需求分組
Gmail / Email / Notion / Google Sheets 作為通知、儲存或報告出口

🛠️ 教學流程設計

[Webhook:接收報名資料]
       ↓
[Iterator:拆解附件 Attachments[]]
       ↓
[儲存附件:如 Google Drive 或 Dropbox]
       ↓
[Router:依照 Session 分流(上午場 / 下午場)]
       ↓
[寄送通知 Email 給對應負責人]
       ↓
[Aggregator:依住宿需求分組報名者]
       ↓
[產出統計報告 / 寄送彙整 Email]

🔁 Iterator 設定

  • 模組:Iterator
  • Array 欄位:Attachments[]
  • 用途:逐一處理每個檔案,例如上傳至雲端硬碟

🔀 Router 設定

  • 模組:Router
  • 分流條件:
    • 上午場 → Session = "AM"
    • 下午場 → Session = "PM"
    • 其他 → fallback route(例如通知人工處理)

每一條分流後都可以加上對應的「寄送信件」模組。

📦 Aggregator 設定

  • 模組:Array Aggregator
  • Source module:Webhook(或 Router 後的處理結果)
  • Group by 欄位:NeedHotel(是 / 否)
  • 輸出格式:依照住宿需求,分成兩個群組,彙整報名者資料

可將結果傳送至:

  • Email 模組:寄出整理報告
  • Google Sheets / Notion:建立分頁式報名清單

📚 第四部分:更多實用應用案例

📦 1. 自動處理每日訂單

情境: 從電商後台擷取每日訂單,根據商品類型分流處理,再彙整為每日報表。

使用模組:

  • API / HTTP 模組(取得訂單)
  • Iterator(逐筆訂單處理)
  • Router(依產品分類路徑)
  • Aggregator(彙整統計資料)
  • Google Sheets / Notion / Email

📰 2. RSS 摘要分類轉發

情境: 從多個 RSS 頻道讀取新文章,根據關鍵字分類寄送到不同部門。

使用模組:

  • RSS > Watch RSS feed
  • Router(依關鍵字、分類處理)
  • Gmail / Slack 通知
  • Dropbox > Save content(儲存文章附件)

📩 3. 收集客服表單並根據緊急程度分配任務

情境: 將客服表單(如 Typeform)中的資料根據「優先級」自動分派給客服團隊。

使用模組:

  • Typeform > Watch responses
  • Router(依 Priority 分流)
  • Google Tasks / ClickUp / Trello(產生任務)
  • Gmail / Slack 通知

📋 4. 每週自動寄送整理後的 Notion 資料摘要

情境: 從 Notion 資料庫提取本週內容,依標籤分類,彙整成 Email 總結寄出。

使用模組:

  • Notion > Search database
  • Iterator(逐筆資料處理)
  • Router(依標籤分類)
  • Aggregator(每類彙整內容)
  • Gmail > Send Email(寄出摘要)

📊 5. 自動收集問卷結果並依部門統整分析

情境: 來自 Google Forms 的問卷回覆,需依受訪者部門分類,再彙整成統計圖表寄出。

🏷️ 6. 自動歸類收據並產出報帳總表

情境: 拍照上傳的收據透過 OCR 讀取金額與類別,依照報帳類型自動分類並彙總。

🏗️ 7. 自動將報名者依地區分配導師

情境: 表單收到報名資料後,依地區自動指派對應導師、寄送通知與建立行事曆事件。

🎁 8. 多語系支援請求的自動處理與轉寄

情境: 收集國際使用者的客服訊息,根據語系自動轉寄給該語言的客服團隊。


📚 第五部分:高級整合案例 - Telegram AI 助理

🎯 場景目標

結合 Make.com + Telegram Bot + ChatGPT API,實現一個多功能 AI 助理,支援三種指令:

  • /image:生成圖片的 Prompt
  • /qa:回答日常生活疑問
  • /scrape:爬取指定網址內容,整理後回覆

🛠️ 完整流程圖(簡化)

[Telegram: Watch updates]
       ↓
     [Router]
 ┌─────┼────────┬─────────┐
 │     │        │         │
 │  /image   /qa    /scrape   其他
 │     │        │         │
 │     ↓        ↓         ↓
 │  [處理圖片請求]  [處理問答]  [處理網頁爬取]

技術實現重點

  1. 使用 Router 根據指令類型分流
  2. 對於 /scrape 功能,運用 Iterator 拆解網頁內容
  3. 使用 Aggregator 合併處理結果
  4. 呼叫 ChatGPT API 進行摘要或回答
  5. 通過 Telegram Bot API 回傳結果

各分支的詳細處理流程:

  • /image 分支:提取 prompt → 呼叫 OpenAI 生成圖片 → 回傳結果
  • /qa 分支:提取問題 → 呼叫 ChatGPT API → 回傳答案
  • /scrape 分支:提取 URL → 爬取網頁 → 拆解內容 → 聚合文本 → 呼叫 ChatGPT 摘要 → 回傳結果

📚 小結:工具選擇指南

需求 建議工具 使用時機
逐一處理陣列中的項目 Iterator 當您有多筆資料需要分別處理
根據條件將資料分流 Router 當需要根據不同條件執行不同流程
將多筆處理結果合併 Aggregator 當需要將多筆資料合併成一個報告或檔案
複雜流程 組合使用 將上述工具組合使用,處理複雜業務流程

學習建議:

  1. 先熟悉 Iterator(最基礎)
  2. 再學習 Router(條件分流)
  3. 最後掌握 Aggregator(資料合併)
  4. 嘗試將這三個工具組合使用,創建更複雜的自動化流程

📚 延伸資源

希望這份教學能幫助您掌握 Make.com 的核心工具,建立高效的自動化流程!

jungyu: 請忠於原味的重新編排本檔案,以資料科學老師的口吻

GitHub Copilot: Enable Gemini 2.5 Pro (Preview) for all clients Enable access to the latest Gemini 2.5 Pro model from Google. Learn more about how GitHub Copilot serves Gemini 2.5 Pro.

jungyu: 請忠於原味的重新編排本檔案,以資料科學老師的口吻

GitHub Copilot: 以下是重新編排的內容,保持原始內容的完整性,並以資料科學老師的口吻進行組織與說明:


Make.com 核心工具介紹

歡迎來到 Make.com 的核心工具教學!在這份指南中,我們將一步步學習如何使用 Make.com 的三大核心模組:RouterAggregatorIterator,並結合實際案例,幫助您快速掌握自動化流程設計的技巧。


🔀 Router 模組

📌 Router 是什麼?

Router(路由器) 是 Make.com 的一個模組,用來將資料流程分成多條支線。每條路徑可以設定自己的篩選條件(Filter),以便針對不同的資料進行個別處理。

✅ 特點:

  • 分流資料:將資料分配到不同的處理流程。
  • 條件篩選:每條路由可加上條件(Filter)。
  • 順序處理:可設定路由的處理順序。
  • 備援路由:處理不符合任何條件的資料。

🛠️ 如何加入 Router?

方法一:在模組後方新增 Router

  1. 點選任一模組的「Add another module」。
  2. 搜尋 Flow Control
  3. 選擇 Router

方法二:插入 Router 到兩個模組之間

  1. 右鍵點選兩模組間的橋接線(bridge)。
  2. 選擇 Add a router

🔃 設定路由順序(Order Routes)

Router 會依序處理每條路由,而不是同時處理。

設定步驟:

  1. 點選 Router。
  2. 右鍵選擇 Order routes
  3. 拖曳箭頭改變處理順序。
  4. (選擇)勾選 Auto-align arranged with set order 自動整理流程圖。
  5. 點選 Apply

⚠️ 注意:Make 不會處理下一條路由,直到上一條處理完畢。


⚠️ 設定 Fallback Route(備援路由)

若資料不符合任何一條路由的條件,會自動進入 fallback 路由。

設定方式:

  1. 點選欲設定為 fallback 的路由的 Filter。
  2. Mark this route as fallback 設為 Yes
  3. 點選 Save

🔁 Fallback 路由會有特殊箭頭圖示,表示它是最後的處理路線。


🌿 選取整條路由分支(Select whole branch)

想一次複製或刪除整串模組?

  1. 點選 Router 模組的分支路由(三點選單)。
  2. 點選 Select whole branch

這樣可以快速管理整條流程!


💡 實例說明:根據天氣發送 Slack 訊息

✅ 任務:

根據明天的天氣,自動發送 Slack 提醒:

  • ☀️ 天氣熱:傳送「穿短褲」。
  • ❄️ 天氣冷:傳送「穿外套」。
  • 🌥️ 其他天氣:傳送「待在家比較好」。

📈 流程設計:

  1. 使用 Weather 模組 抓取天氣資料。
  2. Router 模組分成三條路由:
    • Hot Route → 條件:溫度 > 28°C → 傳 Slack:「穿短褲」。
    • Cold Route → 條件:溫度 < 15°C → 傳 Slack:「穿外套」。
    • Fallback Route → 其他狀況 → 傳 Slack:「待在家比較好」。

🧩 圖解(簡化版):

[Weather 模組] → [Router]
                        ├── [熱條件 → Slack: 穿短褲]
                        ├── [冷條件 → Slack: 穿外套]
                        └── [Fallback → Slack: 待在家比較好]

📦 Aggregator 模組

📌 Aggregator 是什麼?

Aggregator(聚合器) 是用來將多個資料包(bundles)合併成單一資料包的模組。

它會在一個來源模組操作期間:

  • 收集所有接收到的 bundles。
  • 輸出一個 bundle,裡面是一個 陣列(array),每一個陣列項目對應一個原始 bundle 的資料。

🧩 Aggregator 的基本運作邏輯:

  1. 選定一個來源模組(如:Search、Iterator、Webhook)。
  2. Aggregator 收集來源模組傳來的 bundles。
  3. 合併為一個含有資料陣列的單一 bundle。
  4. 傳送給後續模組處理(例如:打包、上傳、匯出等)。

⚙️ Aggregator 設定說明

✅ Source Module(來源模組)

  • 指定從哪個模組開始收集 bundles。
  • 通常是 IteratorSearch 模組 或其他會輸出多個 bundles 的模組。
  • 選擇來源模組後,來源模組與 Aggregator 模組之間的路由會變成灰色區塊,表示這是聚合區段。

🧮 Group by(分組依據)

您可以依據某個欄位或計算公式將聚合結果分組

每個不同的值會變成一組,Aggregator 將輸出多個 bundle,每個包含兩部分:

  • Key:該組的分組鍵值。
  • Array:該組內所有資料的陣列集合。

📝 範例: 如果用 Group by: user_id,會針對每個使用者分開聚合資料。


🚫 Stop processing after an empty aggregation

預設情況下,即使沒有任何 bundle 被聚合(例如都被過濾掉了),Aggregator 仍會輸出一個空結果。

✅ 若您勾選這個選項,當沒有 bundle 可聚合時,Aggregator 將不會輸出任何結果,流程也會終止。


📦 聚合後的輸出資料存取注意事項:

  • Aggregator 不會輸出來源模組與其之間模組的原始資料
  • 後續模組只能存取 Aggregator 輸出的結果。
  • 若需要存取來源模組的資料,請在 Aggregator 設定中 勾選所需欄位(例如 Array Aggregator 裡的 Aggregated fields)。

💡 實務案例:打包 Email 附件並上傳到 Dropbox

✅ 任務:

從 Email 收信匣中抓取所有附件 → 個別處理 → 打包成 ZIP → 上傳到 Dropbox。

📈 流程設計:

  1. Email 模組:Watch Emails
    • 每封信會包含一個 Attachments[] 陣列。
  2. Iterator 模組
    • 將 Attachments[] 陣列逐一拆成多個 bundle。
  3. Aggregator 模組:Create Archive(建立壓縮檔)
    • 聚合所有附件成一個 ZIP 檔。
  4. Dropbox 模組:Upload a file
    • 上傳 ZIP 檔案至 Dropbox。

🧩 圖解流程(簡化版):

[Email Watcher]
    → [Iterator:拆分附件]
        → [Aggregator:打包成 ZIP]
            → [Dropbox:上傳檔案]

🔁 Iterator 模組

📌 Iterator 是什麼?

Iterator(迭代器) 是一種特殊模組,能夠將一個 陣列(Array)轉換成多個單一 bundle

✅ 每個陣列中的項目都會被拆解成獨立的資料 bundle,逐筆傳送給後續模組。


🛠 如何設定 Iterator?

  1. 拖曳 Iterator 模組至流程中。
  2. Array 欄位 指定要拆解的陣列(例如:Attachments[]Items[])。
  3. 按下 OK 儲存設定。

⚠️ 通常搭配會輸出陣列的模組使用,例如:

  • Webhook(接收 JSON)。
  • Email(接收多個附件)。
  • Search / List 類模組(如 Notion > Search objects)。

📦 Iterator 實例應用:儲存 Email 附件到 Google Drive

✅ 任務:

接收一封包含多個附件的 Email,將每個附件個別儲存到 Google Drive 中。

📈 流程設計:

[Watch Emails]
   → [Iterator:分拆 Attachments[] 陣列]
       → [Google Drive:上傳單一檔案]

🪄 小結

功能 說明
🔁 拆解陣列 將 array 中每筆項目轉換為獨立 bundle
📌 Array 欄位 必填!指定要拆解的陣列欄位名稱
⚠️ 無資料顯示時 手動執行上游模組,即可學習資料結構
💡 搭配應用建議 Email 附件、JSON 陣列、Search 結果…

這份教學希望能幫助您快速掌握 Make.com 的核心模組,並靈活應用於各種自動化場景中!

jungyu: 請再整理本檔中的範例

GitHub Copilot: 以下是重新整理的範例,將原始內容進行結構化與簡化,方便快速理解與應用:


Make.com 範例整理

範例 1:根據天氣發送 Slack 訊息

🎯 目標

根據明天的天氣,自動發送 Slack 提醒:

  • ☀️ 天氣熱:傳送「穿短褲」。
  • ❄️ 天氣冷:傳送「穿外套」。
  • 🌥️ 其他天氣:傳送「待在家比較好」。

📈 流程設計

  1. 使用 Weather 模組 抓取天氣資料。
  2. Router 模組分成三條路由:
    • Hot Route → 條件:溫度 > 28°C → 傳 Slack:「穿短褲」。
    • Cold Route → 條件:溫度 < 15°C → 傳 Slack:「穿外套」。
    • Fallback Route → 其他狀況 → 傳 Slack:「待在家比較好」。

🧩 圖解流程

[Weather 模組] → [Router]
                        ├── [熱條件 → Slack: 穿短褲]
                        ├── [冷條件 → Slack: 穿外套]
                        └── [Fallback → Slack: 待在家比較好]

範例 2:打包 Email 附件並上傳到 Dropbox

🎯 目標

從 Email 收信匣中抓取所有附件 → 個別處理 → 打包成 ZIP → 上傳到 Dropbox。

📈 流程設計

  1. Email 模組:Watch Emails
    • 每封信會包含一個 Attachments[] 陣列。
  2. Iterator 模組
    • Attachments[] 陣列逐一拆成多個 bundle。
  3. Aggregator 模組:Create Archive(建立壓縮檔)
    • 聚合所有附件成一個 ZIP 檔。
  4. Dropbox 模組:Upload a file
    • 上傳 ZIP 檔案至 Dropbox。

🧩 圖解流程

[Email Watcher]
    → [Iterator:拆分附件]
        → [Aggregator:打包成 ZIP]
            → [Dropbox:上傳檔案]

🔧 範例3:Telegram AI 助理

各位同學,今天我們要實作一個非常有趣的資料科學應用案例!我將帶大家打造一個結合 Make.com、Telegram Bot 與 OpenAI 的智慧助理系統。這個範例完美展示了如何運用我們之前學過的 RouterIteratorAggregator 三大核心工具,實現複雜的自動化流程。

🧠 案例內容與教學目標

我們將建立一個 Telegram 機器人,它能識別並處理以下三種使用者指令:

  1. /image → 生成並回覆相應提示的圖片
  2. /qa → 回答使用者提出的日常問題
  3. /scrape → 爬取指定網站、分析內容並回傳摘要

這個專案將整合多項資料處理技術:API 串接自然語言處理網頁爬蟲文本分析數據流程控制


🎯 系統運作原理

當使用者向我們的 Telegram Bot 發送指令時,系統會:

  1. 接收訊息 → Webhook 捕獲用戶輸入
  2. 指令分析 → 透過 Router 識別命令類型
  3. 參數擷取 → 提取指令後的文字作為操作參數
  4. 相應處理 → 根據不同指令執行對應操作:
    • /image → 呼叫 OpenAI DALL-E API 生成相關圖片
    • /qa → 透過 ChatGPT API 產生智慧回答
    • /scrape → 爬取網頁資料、拆解內容、合併重點、摘要文章
  5. 回傳結果 → 將處理結果發送回 Telegram 對話

🛠️ 準備工作

在開始實作前,需要準備以下資源:

  1. Telegram Bot 設定

    • 透過 Telegram 中的 @BotFather 建立新機器人
    • 執行 /newbot 命令並完成設定流程
    • 記下獲得的 API Token(重要!)
  2. OpenAI API 帳號與金鑰

  3. Make.com 帳號


📋 模組配置一覽表

模組類型 模組名稱 功能說明
觸發器 Telegram > Watch updates 監聽 Bot 接收的所有訊息
流程控制 Flow Control > Router 依指令類型分流程序
變數管理 Text Tools > Set variable 存取指令參數(提示詞、問題、網址)
AI 服務 OpenAI > Create image 生成圖片
AI 服務 OpenAI > Chat completion 回答問題與摘要內容
網路請求 HTTP > Make a request 抓取網頁原始碼
內容解析 HTML > Parse HTML 分析網頁結構與提取元素
資料處理 Iterator 分解網頁元素陣列
資料聚合 Array Aggregator 將多筆文字重組為完整文本
回應發送 Telegram > Send message/photo 傳送結果給使用者

🔄 系統流程圖

[Telegram: Watch updates]
       ↓
     [Router]
 ┌─────┼─────────┬─────────┐
 │     │         │         │
 │  /image    /qa     /scrape   其他
 │     │         │         │     │
 │     ↓         │         │     │
 │ [設定提示詞]   │         │     │
 │     ↓         │         │     │
 │ [生成圖片]     │         │     │
 │     ↓         │         │     │
 │ [傳送圖片]     │         │     │
 │               │         │     │
 │             [設定問題]   │     │
 │               ↓         │     │
 │          [ChatGPT回答]   │     │
 │               ↓         │     │
 │          [傳送回答]      │     │
 │                         │     │
 │                     [設定網址] │
 │                         ↓     │
 │                     [請求網頁] │
 │                         ↓     │
 │                    [解析HTML]  │
 │                         ↓     │
 │                     [Iterator] │
 │                         ↓     │
 │                [Array Aggregator]
 │                         ↓     │
 │                   [生成摘要]   │
 │                         ↓     │
 │                   [傳送摘要]   │
 │                               │
 │                         [回覆說明]

🚀 實作步驟

1️⃣ 建立基礎 Webhook 連接

首先,建立與 Telegram 的連接橋梁:

  1. 在 Make.com 中點擊「Create new scenario」
  2. 新增第一個模組:Telegram > Watch updates
    • 建立新連接並輸入您的 Bot Token
    • 設定 Webhook(Make.com 會自動產生 URL)
  3. 執行一次「Run once」以完成 Webhook 註冊

2️⃣ 設計 Router 分流邏輯

接著,使用 Router 設計我們的「大腦」:

  1. 在 Telegram 模組後加入:Flow Control > Router
  2. 設定處理順序(右鍵點擊 Router > Order routes):
    • 優先順序:/image/qa/scrape → 其他情況
  3. 為每條路由設置篩選條件:
    • 路由 1:Telegram.message.text starts with "/image "
    • 路由 2:Telegram.message.text starts with "/qa "
    • 路由 3:Telegram.message.text starts with "/scrape "
    • 路由 4:不設條件(處理未知指令)

3️⃣ 實作 /image 分支

這個分支將處理圖片生成請求:

  1. Set variable 模組設定:

    • 變數名稱:prompt
    • 變數值:{{Telegram.message.text.replaceFirst("/image ", "")}}
  2. OpenAI > Create image 設定:

    • 選擇模型:dall·e-3
    • 設定提示:{{prompt}}
  3. Telegram > Send a photo 設定:

    • Chat ID:{{Telegram.chat.id}}
    • 圖片網址:{{CreateImage.data[0].url}}
    • 圖片說明:這是根據您的提示「{{prompt}}」生成的圖片

4️⃣ 實作 /qa 分支

這個分支將處理問答功能:

  1. Set variable 設定:

    • 變數名稱:question
    • 變數值:{{Telegram.message.text.replaceFirst("/qa ", "")}}
  2. OpenAI > Chat completion 設定:

    • 模型選擇:gpt-4
    • 系統角色設定:你是生活小幫手,請用親切口吻回答使用者問題。
    • 使用者問題:{{question}}
  3. Telegram > Send a message 設定:

    • Chat ID:{{Telegram.chat.id}}
    • 訊息內容:{{ChatCompletion.choices[0].message.content}}

5️⃣ 實作 /scrape 分支

這是最複雜的分支,結合了爬蟲、數據處理與 AI 摘要:

  1. Set variable 設定:

    • 變數名稱:url
    • 變數值:{{Telegram.message.text.replaceFirst("/scrape ", "")}}
  2. HTTP > Make a request 設定:

    • 請求方法:GET
    • 目標網址:{{url}}
  3. HTML > Parse HTML 設定:

    • HTML 內容:{{HTTP.response.body}}
    • CSS 選擇器:p(擷取所有段落)
  4. Iterator 設定:

    • 處理陣列:{{ParseHTML.elements}}
  5. Array Aggregator 設定:

    • 來源模組:Iterator
    • 聚合欄位:
      • text{{Iterator.element.textContent}}
    • 不設定 Group by(全部聚合為單一結果)
  6. OpenAI > Chat completion 設定:

    • 模型選擇:gpt-4
    • 系統提示:請將以下網頁內容整理成段落分明的摘要:
    • 使用者訊息:{{ArrayAggregator.array | join("\n\n")}}
  7. Telegram > Send a message 設定:

    • Chat ID:{{Telegram.chat.id}}
    • 訊息內容:{{ChatCompletion.choices[0].message.content}}

6️⃣ 測試與除錯

完成設定後,進行測試:

  1. 點擊「Run once」啟動整個場景
  2. 在 Telegram 中向您的機器人發送測試指令:
    • /image 一隻穿著西裝的貓咪
    • /qa 機器學習和深度學習的差別是什麼?
    • /scrape https://news.ycombinator.com
  3. 檢查回應是否符合預期

💡 進階技巧與最佳實踐

效能優化技巧

  1. 處理長文本的策略

    • 對於大型網頁,使用 Iterator + Aggregator 組合拆分文本
    • 設定適當的批次處理大小,避免超出 Token 限制
  2. 錯誤處理機制

    • 在每個分支末端加入 Error Handler
    • 設定友善的錯誤訊息:「處理您的請求時出現問題,請稍後再試」
    • 記錄錯誤詳情供後續分析
  3. 效能提升方法

    • 使用 Set variable 暫存中間結果,減少重複 API 調用
    • 對於 /scrape,可視網頁結構調整 CSS 選擇器提高解析精確度

安全性考量

  1. 輸入驗證

    • 檢查 URL 有效性,防止惡意連結
    • 實作白名單/黑名單過濾機制
  2. API 使用優化

    • 設定合理的 Token 使用上限
    • 對敏感操作加入使用者驗證層
  3. 正規表達式應用

    • 使用更精確的匹配模式:matches '/image\s+.+'
    • 處理特殊字元和多行輸入

📈 教學重點小結

  1. 核心工具整合應用

    • Router:根據指令類型分流處理邏輯
    • Iterator:拆解 HTML 元素和長文本
    • Aggregator:重組處理後的文本片段
  2. 資料流轉換

    • 從用戶輸入提取有效指令和參數
    • 網頁 HTML → 結構化資料 → 文本摘要
    • API 回應資料 → 使用者友善格式
  3. 實際場景應用

    • 使用 AI 增強自動化流程
    • 結合多種資料來源與服務
    • 建立反饋機制與錯誤處理

透過本例,同學們不僅學會了如何整合 Telegram Bot、OpenAI API 和網頁爬蟲功能,更重要的是掌握了使用 Make.com 三大核心工具(Router、Iterator、Aggregator)解決實際問題的能力。這些技巧可以應用於各種資料科學專案,從資料收集、處理到分析輸出的完整流程。