Make.com 核心工具介紹:Router、Aggregator 與 Iterator 的應用實例
Make.com 核心工具介紹:Router、Aggregator 與 Iterator 的應用實例
本篇 Make.com 的核心工具教學!我們將一步步學習如何使用 Make.com 的三大核心模組:Router、Aggregator 和 Iterator,並結合實際案例,幫助您快速掌握自動化流程設計的技巧。
🔀 Router 模組
📌 Router 是什麼?
Router(路由器) 是 Make.com 的一個模組,用來將資料流程分成多條支線。每條路徑可以設定自己的篩選條件(Filter),以便針對不同的資料進行個別處理。
✅ 特點:
- 分流資料:將資料分配到不同的處理流程。
- 條件篩選:每條路由可加上條件(Filter)。
- 順序處理:可設定路由的處理順序。
- 備援路由:處理不符合任何條件的資料。
🛠️ 如何加入 Router?
方法一:在模組後方新增 Router
- 點選任一模組的「Add another module」。
- 搜尋 Flow Control。
- 選擇 Router。
方法二:插入 Router 到兩個模組之間
- 右鍵點選兩模組間的橋接線(bridge)。
- 選擇 Add a router。
🔃 設定路由順序(Order Routes)
Router 會依序處理每條路由,而不是同時處理。
設定步驟:
- 點選 Router。
- 右鍵選擇 Order routes。
- 拖曳箭頭改變處理順序。
- (選擇)勾選 Auto-align arranged with set order 自動整理流程圖。
- 點選 Apply。
⚠️ 注意:Make 不會處理下一條路由,直到上一條處理完畢。
⚠️ 設定 Fallback Route(備援路由)
若資料不符合任何一條路由的條件,會自動進入 fallback 路由。
設定方式:
- 點選欲設定為 fallback 的路由的 Filter。
- 將 Mark this route as fallback 設為 Yes。
- 點選 Save。
🔁 Fallback 路由會有特殊箭頭圖示,表示它是最後的處理路線。
🌿 選取整條路由分支(Select whole branch)
想一次複製或刪除整串模組?
- 點選 Router 模組的分支路由(三點選單)。
- 點選 Select whole branch。
這樣可以快速管理整條流程!
💡 實例說明:根據天氣發送 Slack 訊息
✅ 任務:
根據明天的天氣,自動發送 Slack 提醒:
- ☀️ 天氣熱:傳送「穿短褲」。
- ❄️ 天氣冷:傳送「穿外套」。
- 🌥️ 其他天氣:傳送「待在家比較好」。
📈 流程設計:
- 使用 Weather 模組 抓取天氣資料。
- 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 的基本運作邏輯:
- 選定一個來源模組(如:Search、Iterator、Webhook)。
- Aggregator 收集來源模組傳來的 bundles。
- 合併為一個含有資料陣列的單一 bundle。
- 傳送給後續模組處理(例如:打包、上傳、匯出等)。
⚙️ Aggregator 設定說明
✅ Source Module(來源模組)
- 指定從哪個模組開始收集 bundles。
- 通常是 Iterator、Search 模組 或其他會輸出多個 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。
📈 流程設計:
- Email 模組:Watch Emails
- 每封信會包含一個 Attachments[] 陣列。
- Iterator 模組
- 將 Attachments[] 陣列逐一拆成多個 bundle。
- Aggregator 模組:Create Archive(建立壓縮檔)
- 聚合所有附件成一個 ZIP 檔。
- Dropbox 模組:Upload a file
- 上傳 ZIP 檔案至 Dropbox。
🧩 圖解流程(簡化版):
[Email Watcher]
→ [Iterator:拆分附件]
→ [Aggregator:打包成 ZIP]
→ [Dropbox:上傳檔案]
🔁 Iterator 模組
📌 Iterator 是什麼?
Iterator(迭代器) 是一種特殊模組,能夠將一個 陣列(Array)轉換成多個單一 bundle。
✅ 每個陣列中的項目都會被拆解成獨立的資料 bundle,逐筆傳送給後續模組。
🛠 如何設定 Iterator?
- 拖曳 Iterator 模組至流程中。
- 在 Array 欄位 指定要拆解的陣列(例如:
Attachments[]
、Items[]
)。 - 按下 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
- 報名場次(如:上午場、下午場)
- 附件(簡報、文件)
- 是否需要住宿
你希望系統自動:
- 處理每筆報名資料
- 根據場次分類寄送對應通知信
- 若有多個附件,個別儲存
- 將所有報名者依住宿需求分類,產生報告並寄送
🧩 使用模組
模組 | 用途說明 |
---|---|
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 | 自動寄出對應通知或報告 |
🔗 延伸閱讀 / 官方參考
- 📘 Make.com 官方教學:Expand your scenario
- 🎥 Iterator + Aggregator 教學影片(在 Make Academy)
- 📄 Aggregator 模組官方說明:Link
🔧 範例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 依據使用者指令分流,並結合 Iterator、Aggregator、HTTP 模組與 ChatGPT API,完成三種常見互動:
/image
→ 回覆生成圖片的 Prompt/qa
→ 回答日常生活疑問/scrape
→ 爬取指定網址內容,整理後回覆
- 準備工作
- 建立 Telegram Bot 與 Make.com Webhook
- Scenario 基本架構
- 使用 Router 分流指令
- 各分支詳細實作
/image
:生成圖片 Prompt/qa
:回答日常疑問/scrape
:爬取網頁並摘要
- 測試與運行
- 進階技巧與故障排除
🎯 場景目標
當使用者在 Telegram Bot 輸入指令後,Make.com 自動分流到對應流程:
- /image:將後續文字當作 Prompt,呼叫 ChatGPT Image API,並將生成提示回傳
- /qa:將後續文字當作提問,呼叫 ChatGPT Chat API 回答
- /scrape:讀取指令參數中的網址,爬取該頁面內容、拆解、聚合、最後呼叫 ChatGPT API 做總結,回覆給用戶
1️⃣ 準備工作
- 申請 Telegram Bot
- 在 Telegram 搜尋
@BotFather
/newbot
→ 取得 Bot Token
- 在 Telegram 搜尋
- 申請 OpenAI API 金鑰
- 註冊並登入 Make.com
- (選用) 建立自己的伺服器或 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
- 在 Make.com 儀表板點「Create a new scenario」
- 搜尋並加入 Telegram > Watch updates 模組
- 連接你的 Bot Token
- 設定 Webhook URL(Make.com 會自動生成)
- 按下 Run once,完成 Webhook 與 Telegram 的連結
4️⃣ 加入 Router 分流指令
- 在 Watch updates 之後,點「+」→ 搜尋 Flow Control > Router
- 右鍵 Router → Order routes,依序拖曳成:
/image
→/qa
→/scrape
→ fallback - 在每條路由上點 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
分支
- Set variable 模組
- Name:
prompt
- Value:
{{Telegram.message.text.replaceFirst("/image ", "")}}
- Name:
- OpenAI > Create image prompt
- Model:
dall·e-3
- Prompt:
{{prompt}}
- Model:
- Telegram > Send a photo
- Chat ID:
{{Telegram.chat.id}}
- Photo URL:
{{CreateImage.data[0].url}}
- Caption:
這是根據您的 Prompt「{{prompt}}」生成的圖片
- Chat ID:
🔹 5.2 /qa
分支
- Set variable
- Name:
question
- Value:
{{Telegram.message.text.replaceFirst("/qa ", "")}}
- Name:
- OpenAI > Chat completion
- Model:
gpt-4
- System prompt:
你是生活小幫手,請用親切口吻回答使用者問題。
- User message:
{{question}}
- Model:
- Telegram > Send a message
- Chat ID:
{{Telegram.chat.id}}
- Text:
{{ChatCompletion.choices[0].message.content}}
- Chat ID:
🔹 5.3 /scrape
分支
註:若抓取的頁面內容量大,可視需求跳過 Parse HTML,直接傳給 ChatGPT 做摘要。
- Set variable
- Name:
url
- Value:
{{Telegram.message.text.replaceFirst("/scrape ", "")}}
- Name:
- HTTP > Make a request
- Method:GET
- URL:
{{url}}
- HTML > Parse HTML(可選)
- HTML:
{{HTTP.response.body}}
- CSS selector:
p
- HTML:
- Iterator
- Array:
{{ParseHTML.elements}}
- Array:
- Array Aggregator
- Source module:Iterator
- Aggregated fields:
text
→{{Iterator.element.textContent}}
- 不設定 Group by → 全部聚成一個 bundle
- OpenAI > Chat completion
- Model:
gpt-4
- System prompt:
請將以下網頁內容整理成段落分明的摘要:
- User message:
{{ArrayAggregator.array | join("\n\n")}}
- Model:
- Telegram > Send a message
- Chat ID:
{{Telegram.chat.id}}
- Text:
{{ChatCompletion.choices[0].message.content}}
- Chat ID:
6️⃣ 測試與運行
- 在 Scenario 中按 Run once
- 在 Telegram Bot 中依序輸入:
/image 一隻穿著西裝的貓咪
/qa 今天天氣怎麼樣?
/scrape https://news.ycombinator.com
- 確認 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 附件、搜尋結果等陣列資料
🛠️ 基本設定:
- 拖曳 Iterator 模組至流程中
- 在 Array 欄位 指定要拆解的陣列(例如:
Attachments[]
、Items[]
) - 按下 OK 儲存設定
📝 簡單範例:處理 Email 附件
[Watch Emails]
→ [Iterator:分拆 Attachments[] 陣列]
→ [Google Drive:上傳單一檔案]
🧪 問題排解:
若在設定時看不到資料欄位,可能是因為上游模組還沒執行過。解決方法是手動執行上游模組,讓系統學習資料結構。
🔀 2. Router 模組
中級工具,用於資料分流和條件判斷。
📌 Router 是什麼?
Router(路由器) 是用來把資料流程分成多條支線的模組。每條路徑可以設定自己的篩選條件(Filter)來處理資料。
✅ 特點:
- 分流資料到不同處理流程
- 每條路由可加上條件(filter)
- 可設定處理順序
- 可設定 備援路由(fallback route),處理不符合任何條件的資料
🛠️ 如何加入 Router?
方法一:在模組後方新增
- 點選任一模組的「Add another module」
- 搜尋 Flow Control
- 選擇 Router
方法二:插入到兩個模組之間
- 右鍵點選兩模組間的橋接線(bridge)
- 選擇 Add a router
🔃 設定路由順序:
- 點選 Router
- 右鍵選擇 Order routes
- 拖曳箭頭改變處理順序
- (選擇)勾選 Auto-align arranged with set order 自動整理流程圖
- 點選 Apply
⚠️ 設定 Fallback Route:
- 點選欲設定為 fallback 的路由的 Filter
- 將 Mark this route as fallback 設為 Yes
- 點選 Save
🧩 簡單範例:天氣提醒
根據明天的天氣,自動發送 Slack 提醒:
- 天氣熱:傳送「穿短褲」
- 天氣冷:傳送「穿外套」
- 其他天氣:傳送「待在家比較好」
[Weather 模組] → [Router]
├── [熱條件 → Slack: 穿短褲]
├── [冷條件 → Slack: 穿外套]
└── [Fallback → Slack: 待在家比較好]
📦 3. Aggregator 模組
進階工具,用於彙整多筆資料。
📌 Aggregator 是什麼?
Aggregator(聚合器) 是用來將多個資料包(bundles)合併成單一資料包的模組,通常輸出為一個陣列。
🧩 基本運作邏輯:
- 選定一個來源模組(如:Search、Iterator、Webhook)
- Aggregator 收集來源模組傳來的所有 bundles
- 合併為一個含有資料陣列的單一 bundle
- 傳送給後續模組處理
⚙️ 主要設定選項:
- Source Module(來源模組):指定從哪個模組開始收集 bundles
- Group by(分組依據):可依據某個欄位將結果分組
- 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
(是/否) - 輸出:依住宿需求分組報名者資料
🔧 實用應用案例
-
自動處理每日訂單:從電商後台擷取訂單,按商品類型分流處理,彙整報表
-
RSS 摘要分類轉發:讀取 RSS 頻道,根據關鍵字分類發送給不同團隊
-
客服表單優先級分配:將客服表單依緊急程度自動分配任務
-
自動問卷結果彙整:收集問卷回覆,依部門分類,生成統計報告
-
收據自動歸類報帳:OCR 讀取收據金額與類別,自動分類彙總
📚 第四部分:高級整合案例
🔧 Telegram AI 助理實作
運用 Make.com + Telegram Bot + ChatGPT,實現三種互動功能:
/image
→ 生成圖片的 Prompt/qa
→ 回答日常生活疑問/scrape
→ 爬取指定網址內容,整理後回覆
🛠️ 完整流程設計:
[Telegram: Watch updates]
↓
[Router]
┌─────┼────────┬─────────┐
│ │ │ │
│ /image /qa /scrape 其他
│ │ │ │
│ ↓ ↓ ↓
│ [處理圖片請求] [處理問答] [處理網頁爬取]
🔀 Router 設定:
- 在 Router 上設置三個分支條件
- 每個分支設置不同的處理流程
- 使用 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?
- 拖曳 Iterator 模組至流程中
- 在 Array 欄位 指定要拆解的陣列(例如:
Attachments[]
、Items[]
) - 按下 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)尚未執行過,因此無法提供輸出資料結構
✅ 解決方法:
- 手動執行上游模組:
- 點選模組右鍵 > 選擇「Run this module only」
- 或手動啟動整個流程(可先斷開後續模組避免影響)
- 完成後,再打開 Iterator 設定面板,您將會看到正確的資料結構
- 此時,後續模組也能正確對應輸出的欄位了 🎉
🔀 Router 模組(中級)
中級工具,用於資料分流和條件判斷。
📌 Router 是什麼?
Router(路由器) 是 Make.com 的一個模組,用來把資料流程分成多條支線。每條路徑可以設定自己的篩選條件(Filter)來處理資料。
✅ 特點:
- 分流資料到不同處理流程
- 每條路由可加上條件(filter)
- 可設定處理順序
- 可設定 備援路由(fallback route),處理不符合任何條件的資料
🛠️ 如何加入 Router?
方法一:在模組後方新增 Router
- 點選任一模組的「Add another module」
- 搜尋 Flow Control
- 選擇 Router
方法二:插入 Router 到兩個模組之間
- 右鍵點選兩模組間的橋接線(bridge)
- 選擇 Add a router
🔃 設定路由順序(Order Routes)
Router 會依序處理每條路由,並不是同時處理。
設定步驟:
- 點選 Router
- 右鍵選擇 Order routes
- 拖曳箭頭改變處理順序
- (選擇)勾選 Auto-align arranged with set order 自動整理流程圖
- 點選 Apply
⚠️ 注意:Make 不會處理下一條路由,直到上一條處理完畢。
⚠️ 設定 Fallback Route(備援路由)
若資料不符合任何一條路由的條件,會自動進入 fallback 路由。
設定方式:
- 點選欲設定為 fallback 的路由的 Filter
- 將 Mark this route as fallback 設為 Yes
- 點選 Save
🔁 Fallback 路由會有特殊箭頭圖示,表示它是最後的處理路線。
🌿 選取整條路由分支(Select whole branch)
想一次複製或刪除整串模組?
- 點選 Router 模組的分支路由(三點選單)
- 點選 Select whole branch
這樣可以快速管理整條流程!
💡 實例說明:根據天氣發送 Slack 訊息
✅ 任務:
根據明天的天氣,自動發送 Slack 提醒:
- ☀️ 天氣熱:傳送「穿短褲」
- ❄️ 天氣冷:傳送「穿外套」
- 🌥️ 其他天氣:傳送「待在家比較好」
📈 流程設計:
- 使用 Weather 模組 抓取天氣資料
- 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 的基本運作邏輯:
- 選定一個來源模組(如:Search、Iterator、Webhook)
- Aggregator 收集來源模組傳來的 bundles
- 合併為一個含有資料陣列的單一 bundle
- 傳送給後續模組處理(例如:打包、上傳、匯出等)
⚙️ Aggregator 設定說明
✅ Source Module(來源模組)
- 指定從哪個模組開始收集 bundles
- 通常是 Iterator、Search 模組 或其他會輸出多個 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
📈 流程設計:
- Email 模組:Watch Emails
- 每封信會包含一個 Attachments[] 陣列
- Iterator 模組
- 將 Attachments[] 陣列逐一拆成多個 bundle
- Aggregator 模組:Create Archive(建立壓縮檔)
- 聚合所有附件成一個 ZIP 檔
- Dropbox 模組:Upload a file
- 上傳 ZIP 檔案至 Dropbox
🧩 圖解流程(簡化版):
[Email Watcher]
→ [Iterator:拆分附件]
→ [Aggregator:打包成 ZIP]
→ [Dropbox:上傳檔案]
📌 小技巧與注意事項:
- 使用 Iterator + Aggregator 是處理「多筆資料 → 單一結果」的經典組合
- 使用 Group by 可依照條件進行多組聚合
- 記得選擇您要聚合的欄位,否則後續無法讀取內容
📚 第三部分:實務應用案例
🔧 範例1:自動處理來自表單的報名資料
🎯 教學目標
學會如何使用 Iterator、Router、Aggregator 模組,將來自表單的報名資料依照條件分類、個別處理,並彙整寄送通知。
📘 使用情境
您正在辦一場研討會活動,報名表單會收到參與者的以下資訊:
- 姓名、Email
- 報名場次(如:上午場、下午場)
- 附件(簡報、文件)
- 是否需要住宿
您希望系統自動:
- 處理每筆報名資料
- 根據場次分類寄送對應通知信
- 若有多個附件,個別儲存
- 將所有報名者依住宿需求分類,產生報告並寄送
🧩 使用模組
模組 | 用途說明 |
---|---|
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 其他
│ │ │ │
│ ↓ ↓ ↓
│ [處理圖片請求] [處理問答] [處理網頁爬取]
技術實現重點
- 使用 Router 根據指令類型分流
- 對於
/scrape
功能,運用 Iterator 拆解網頁內容 - 使用 Aggregator 合併處理結果
- 呼叫 ChatGPT API 進行摘要或回答
- 通過 Telegram Bot API 回傳結果
各分支的詳細處理流程:
/image
分支:提取 prompt → 呼叫 OpenAI 生成圖片 → 回傳結果/qa
分支:提取問題 → 呼叫 ChatGPT API → 回傳答案/scrape
分支:提取 URL → 爬取網頁 → 拆解內容 → 聚合文本 → 呼叫 ChatGPT 摘要 → 回傳結果
📚 小結:工具選擇指南
需求 | 建議工具 | 使用時機 |
---|---|---|
逐一處理陣列中的項目 | Iterator | 當您有多筆資料需要分別處理 |
根據條件將資料分流 | Router | 當需要根據不同條件執行不同流程 |
將多筆處理結果合併 | Aggregator | 當需要將多筆資料合併成一個報告或檔案 |
複雜流程 | 組合使用 | 將上述工具組合使用,處理複雜業務流程 |
學習建議:
- 先熟悉 Iterator(最基礎)
- 再學習 Router(條件分流)
- 最後掌握 Aggregator(資料合併)
- 嘗試將這三個工具組合使用,創建更複雜的自動化流程
📚 延伸資源
希望這份教學能幫助您掌握 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 的三大核心模組:Router、Aggregator 和 Iterator,並結合實際案例,幫助您快速掌握自動化流程設計的技巧。
🔀 Router 模組
📌 Router 是什麼?
Router(路由器) 是 Make.com 的一個模組,用來將資料流程分成多條支線。每條路徑可以設定自己的篩選條件(Filter),以便針對不同的資料進行個別處理。
✅ 特點:
- 分流資料:將資料分配到不同的處理流程。
- 條件篩選:每條路由可加上條件(Filter)。
- 順序處理:可設定路由的處理順序。
- 備援路由:處理不符合任何條件的資料。
🛠️ 如何加入 Router?
方法一:在模組後方新增 Router
- 點選任一模組的「Add another module」。
- 搜尋 Flow Control。
- 選擇 Router。
方法二:插入 Router 到兩個模組之間
- 右鍵點選兩模組間的橋接線(bridge)。
- 選擇 Add a router。
🔃 設定路由順序(Order Routes)
Router 會依序處理每條路由,而不是同時處理。
設定步驟:
- 點選 Router。
- 右鍵選擇 Order routes。
- 拖曳箭頭改變處理順序。
- (選擇)勾選 Auto-align arranged with set order 自動整理流程圖。
- 點選 Apply。
⚠️ 注意:Make 不會處理下一條路由,直到上一條處理完畢。
⚠️ 設定 Fallback Route(備援路由)
若資料不符合任何一條路由的條件,會自動進入 fallback 路由。
設定方式:
- 點選欲設定為 fallback 的路由的 Filter。
- 將 Mark this route as fallback 設為 Yes。
- 點選 Save。
🔁 Fallback 路由會有特殊箭頭圖示,表示它是最後的處理路線。
🌿 選取整條路由分支(Select whole branch)
想一次複製或刪除整串模組?
- 點選 Router 模組的分支路由(三點選單)。
- 點選 Select whole branch。
這樣可以快速管理整條流程!
💡 實例說明:根據天氣發送 Slack 訊息
✅ 任務:
根據明天的天氣,自動發送 Slack 提醒:
- ☀️ 天氣熱:傳送「穿短褲」。
- ❄️ 天氣冷:傳送「穿外套」。
- 🌥️ 其他天氣:傳送「待在家比較好」。
📈 流程設計:
- 使用 Weather 模組 抓取天氣資料。
- 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 的基本運作邏輯:
- 選定一個來源模組(如:Search、Iterator、Webhook)。
- Aggregator 收集來源模組傳來的 bundles。
- 合併為一個含有資料陣列的單一 bundle。
- 傳送給後續模組處理(例如:打包、上傳、匯出等)。
⚙️ Aggregator 設定說明
✅ Source Module(來源模組)
- 指定從哪個模組開始收集 bundles。
- 通常是 Iterator、Search 模組 或其他會輸出多個 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。
📈 流程設計:
- Email 模組:Watch Emails
- 每封信會包含一個 Attachments[] 陣列。
- Iterator 模組
- 將 Attachments[] 陣列逐一拆成多個 bundle。
- Aggregator 模組:Create Archive(建立壓縮檔)
- 聚合所有附件成一個 ZIP 檔。
- Dropbox 模組:Upload a file
- 上傳 ZIP 檔案至 Dropbox。
🧩 圖解流程(簡化版):
[Email Watcher]
→ [Iterator:拆分附件]
→ [Aggregator:打包成 ZIP]
→ [Dropbox:上傳檔案]
🔁 Iterator 模組
📌 Iterator 是什麼?
Iterator(迭代器) 是一種特殊模組,能夠將一個 陣列(Array)轉換成多個單一 bundle。
✅ 每個陣列中的項目都會被拆解成獨立的資料 bundle,逐筆傳送給後續模組。
🛠 如何設定 Iterator?
- 拖曳 Iterator 模組至流程中。
- 在 Array 欄位 指定要拆解的陣列(例如:
Attachments[]
、Items[]
)。 - 按下 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 提醒:
- ☀️ 天氣熱:傳送「穿短褲」。
- ❄️ 天氣冷:傳送「穿外套」。
- 🌥️ 其他天氣:傳送「待在家比較好」。
📈 流程設計
- 使用 Weather 模組 抓取天氣資料。
- 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。
📈 流程設計
- Email 模組:Watch Emails
- 每封信會包含一個
Attachments[]
陣列。
- 每封信會包含一個
- Iterator 模組
- 將
Attachments[]
陣列逐一拆成多個 bundle。
- 將
- Aggregator 模組:Create Archive(建立壓縮檔)
- 聚合所有附件成一個 ZIP 檔。
- Dropbox 模組:Upload a file
- 上傳 ZIP 檔案至 Dropbox。
🧩 圖解流程
[Email Watcher]
→ [Iterator:拆分附件]
→ [Aggregator:打包成 ZIP]
→ [Dropbox:上傳檔案]
🔧 範例3:Telegram AI 助理
各位同學,今天我們要實作一個非常有趣的資料科學應用案例!我將帶大家打造一個結合 Make.com、Telegram Bot 與 OpenAI 的智慧助理系統。這個範例完美展示了如何運用我們之前學過的 Router、Iterator 和 Aggregator 三大核心工具,實現複雜的自動化流程。
🧠 案例內容與教學目標
我們將建立一個 Telegram 機器人,它能識別並處理以下三種使用者指令:
/image
→ 生成並回覆相應提示的圖片/qa
→ 回答使用者提出的日常問題/scrape
→ 爬取指定網站、分析內容並回傳摘要
這個專案將整合多項資料處理技術:API 串接、自然語言處理、網頁爬蟲、文本分析 與 數據流程控制。
🎯 系統運作原理
當使用者向我們的 Telegram Bot 發送指令時,系統會:
- 接收訊息 → Webhook 捕獲用戶輸入
- 指令分析 → 透過 Router 識別命令類型
- 參數擷取 → 提取指令後的文字作為操作參數
- 相應處理 → 根據不同指令執行對應操作:
/image
→ 呼叫 OpenAI DALL-E API 生成相關圖片/qa
→ 透過 ChatGPT API 產生智慧回答/scrape
→ 爬取網頁資料、拆解內容、合併重點、摘要文章
- 回傳結果 → 將處理結果發送回 Telegram 對話
🛠️ 準備工作
在開始實作前,需要準備以下資源:
-
Telegram Bot 設定
- 透過 Telegram 中的
@BotFather
建立新機器人 - 執行
/newbot
命令並完成設定流程 - 記下獲得的 API Token(重要!)
- 透過 Telegram 中的
-
OpenAI API 帳號與金鑰
- 在 OpenAI 平台 申請帳號
- 生成並保存 API 金鑰
-
Make.com 帳號
- 註冊並登入 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 的連接橋梁:
- 在 Make.com 中點擊「Create new scenario」
- 新增第一個模組:Telegram > Watch updates
- 建立新連接並輸入您的 Bot Token
- 設定 Webhook(Make.com 會自動產生 URL)
- 執行一次「Run once」以完成 Webhook 註冊
2️⃣ 設計 Router 分流邏輯
接著,使用 Router 設計我們的「大腦」:
- 在 Telegram 模組後加入:Flow Control > Router
- 設定處理順序(右鍵點擊 Router > Order routes):
- 優先順序:
/image
→/qa
→/scrape
→ 其他情況
- 優先順序:
- 為每條路由設置篩選條件:
- 路由 1:
Telegram.message.text starts with "/image "
- 路由 2:
Telegram.message.text starts with "/qa "
- 路由 3:
Telegram.message.text starts with "/scrape "
- 路由 4:不設條件(處理未知指令)
- 路由 1:
3️⃣ 實作 /image
分支
這個分支將處理圖片生成請求:
-
Set variable 模組設定:
- 變數名稱:
prompt
- 變數值:
{{Telegram.message.text.replaceFirst("/image ", "")}}
- 變數名稱:
-
OpenAI > Create image 設定:
- 選擇模型:
dall·e-3
- 設定提示:
{{prompt}}
- 選擇模型:
-
Telegram > Send a photo 設定:
- Chat ID:
{{Telegram.chat.id}}
- 圖片網址:
{{CreateImage.data[0].url}}
- 圖片說明:
這是根據您的提示「{{prompt}}」生成的圖片
- Chat ID:
4️⃣ 實作 /qa
分支
這個分支將處理問答功能:
-
Set variable 設定:
- 變數名稱:
question
- 變數值:
{{Telegram.message.text.replaceFirst("/qa ", "")}}
- 變數名稱:
-
OpenAI > Chat completion 設定:
- 模型選擇:
gpt-4
- 系統角色設定:
你是生活小幫手,請用親切口吻回答使用者問題。
- 使用者問題:
{{question}}
- 模型選擇:
-
Telegram > Send a message 設定:
- Chat ID:
{{Telegram.chat.id}}
- 訊息內容:
{{ChatCompletion.choices[0].message.content}}
- Chat ID:
5️⃣ 實作 /scrape
分支
這是最複雜的分支,結合了爬蟲、數據處理與 AI 摘要:
-
Set variable 設定:
- 變數名稱:
url
- 變數值:
{{Telegram.message.text.replaceFirst("/scrape ", "")}}
- 變數名稱:
-
HTTP > Make a request 設定:
- 請求方法:GET
- 目標網址:
{{url}}
-
HTML > Parse HTML 設定:
- HTML 內容:
{{HTTP.response.body}}
- CSS 選擇器:
p
(擷取所有段落)
- HTML 內容:
-
Iterator 設定:
- 處理陣列:
{{ParseHTML.elements}}
- 處理陣列:
-
Array Aggregator 設定:
- 來源模組:Iterator
- 聚合欄位:
text
:{{Iterator.element.textContent}}
- 不設定 Group by(全部聚合為單一結果)
-
OpenAI > Chat completion 設定:
- 模型選擇:
gpt-4
- 系統提示:
請將以下網頁內容整理成段落分明的摘要:
- 使用者訊息:
{{ArrayAggregator.array | join("\n\n")}}
- 模型選擇:
-
Telegram > Send a message 設定:
- Chat ID:
{{Telegram.chat.id}}
- 訊息內容:
{{ChatCompletion.choices[0].message.content}}
- Chat ID:
6️⃣ 測試與除錯
完成設定後,進行測試:
- 點擊「Run once」啟動整個場景
- 在 Telegram 中向您的機器人發送測試指令:
/image 一隻穿著西裝的貓咪
/qa 機器學習和深度學習的差別是什麼?
/scrape https://news.ycombinator.com
- 檢查回應是否符合預期
💡 進階技巧與最佳實踐
效能優化技巧
-
處理長文本的策略:
- 對於大型網頁,使用 Iterator + Aggregator 組合拆分文本
- 設定適當的批次處理大小,避免超出 Token 限制
-
錯誤處理機制:
- 在每個分支末端加入 Error Handler
- 設定友善的錯誤訊息:「處理您的請求時出現問題,請稍後再試」
- 記錄錯誤詳情供後續分析
-
效能提升方法:
- 使用 Set variable 暫存中間結果,減少重複 API 調用
- 對於
/scrape
,可視網頁結構調整 CSS 選擇器提高解析精確度
安全性考量
-
輸入驗證:
- 檢查 URL 有效性,防止惡意連結
- 實作白名單/黑名單過濾機制
-
API 使用優化:
- 設定合理的 Token 使用上限
- 對敏感操作加入使用者驗證層
-
正規表達式應用:
- 使用更精確的匹配模式:
matches '/image\s+.+'
- 處理特殊字元和多行輸入
- 使用更精確的匹配模式:
📈 教學重點小結
-
核心工具整合應用:
- Router:根據指令類型分流處理邏輯
- Iterator:拆解 HTML 元素和長文本
- Aggregator:重組處理後的文本片段
-
資料流轉換:
- 從用戶輸入提取有效指令和參數
- 網頁 HTML → 結構化資料 → 文本摘要
- API 回應資料 → 使用者友善格式
-
實際場景應用:
- 使用 AI 增強自動化流程
- 結合多種資料來源與服務
- 建立反饋機制與錯誤處理
透過本例,同學們不僅學會了如何整合 Telegram Bot、OpenAI API 和網頁爬蟲功能,更重要的是掌握了使用 Make.com 三大核心工具(Router、Iterator、Aggregator)解決實際問題的能力。這些技巧可以應用於各種資料科學專案,從資料收集、處理到分析輸出的完整流程。