使用make平台設計自動化流程需要具備的軟體基礎知識
在 Make 平台進行自動化設計之前,理解一些軟體工程與資料處理的基礎概念,能夠讓你設計出更精確、穩定且可維護的流程。本文將透過核心概念,結合 Weather、HTTP、Line、Google sheet、Gmail 等常見模組的應用情境,幫助沒有程式背景的學習者,也能快速建立起基礎軟體知識。
1. Variable(變數)
定義
變數是用來儲存資料的命名容器,可在流程中重複引用,且其值可隨時間或條件改變。變數是流程中「記住資訊」的方式。
在一次 Scenario 的執行過程中,變數用來臨時儲存和傳遞資料的命名容器。當您需要儲存一個中間計算結果,或設定一個全域設定值供後續多個模組使用時,變數就非常有用。您可以使用 `Tools > Set variable` 模組來建立變數,並用Tools > Get variable` 模組來取用它
類比
想像你有一張便利貼,寫上「今天氣溫」,早上查到是 28°C 就寫上去,下午若溫度變成 30°C,你擦掉改成 30°C。標籤(變數名稱)不變,內容(值)可更新。
Make 應用示例
- Weather 模組取得當日氣溫後,用 Tools ▸ Set variable 儲存為 varTemperature
- 在 Gmail 模組寄信時,主旨可設定為:今日氣溫:{{varTemperature}}°C
- Make 內建變數:Make 在每個執行中提供系統變數,如:
- now:目前時間
- timestamp:時間戳記
互動練習
建立一個流程:
- 每天早上 7 點用 Weather 模組抓取氣溫。
- 用 Set variable 將氣溫存成 varTemperature。
- 用 Gmail 模組發送訊息:「今天( {{now}})的氣溫是 {{varTemperature}} °C,記得注意穿著。」
💡 Tips: {{now}} 是Make內建變數,{{varTemperature}} 是指 Set variable 模組中的自訂變數 varTemperature 變數,兩者都可利用「資料選擇器」(Data Selector) 來選取。
2. Function(函式)
定義
函式是特定運算邏輯的程式單元,能接收輸入(參數)、處理後產生輸出(結果),可多次重複使用。
Make 提供的內建資料處理工具,讓您能像在 Excel 中使用公式一樣對資料進行操作。熟練運用各種函數(如用於文字處理的 `split`、`replace`,用於日期計算的 `addDays`,用於資料提取的 `get`、`map`)是從入門到進階的關鍵
類比
像咖啡機:放入咖啡豆與水(輸入),按下按鈕(呼叫函式),輸出一杯咖啡(輸出),不管做幾次,流程一致。
Make 應用示例
- Weather 模組取得當日氣溫後,設計一計算體感溫度的函式
- 使用 Gmail 模組寄出訊息(溫度/體感溫度),加上今天日期,以及將溫度取小數點後面一位
- Make 內建函式(部分):
- 文字/字串:upper(), lower(), trim(), replace(), contains()
- 日期:formatNumber(), formatDate(), addHours(), addDays()
- 數值:average(), round(), max(), min()
- 條件:if(condition; then; else)(常用來處理空值或預設值)
- 集合:map(), join(), length(), contains()
互動練習
建立一個流程:
- 每天早上 7 點用 Weather 模組抓取氣溫與濕度。
- 新增 Tools → Set Variable 模組,在變數名稱(例如 體感溫度 )中輸入計算公式(計算函式):體感溫度 = 氣溫 + (濕度 / 100) * 4
- 使用Gmail 模組發送訊息, 主旨為「今天的體感溫度 xx.x °C」,內容則為「 YYYY/MM/DD 的溫度為 xx.x °C, ,體感溫度為 xx.x °C (日期格式為 YYYY/MM/DD, 溫度取到小數點1位,例如,2025/8/12 的溫度為 30.1 °C,體感溫度為 31.5 °C )
💡 Tips: formatDate(), formatNumber() 兩者都是Make內建函式,可以針對日期和數字進行格式化,兩者都可利用「資料選擇器」(Data Selector) 來選取。
3. Flow Control(流程控制)
定義
流程控制決定自動化步驟的執行順序與分支,常見的控制結構包含條件判斷(if)、多路分流(router)、錯誤處理與延遲等。
這是在視覺化環境中實現程式邏輯的方式。`Router` 實現了並行處理;`Filter` 實現了條件判斷(if);`Iterator` 實現了迴圈(loop);而 `Aggregator` 則是用來將迴圈處理完的結果重新組合。掌握這些工具,您就能建構出具有複雜商業邏輯的流程。
類比
像十字路口的紅綠燈與指示牌,綠燈直行、紅燈停、特定條件才右轉。
Make 應用示例
- Filter:放在兩模組之間;條件不符即停止該路徑。例如:若氣溫高於 30°C,才用Line 提醒。
- Router:一進多出;每個出口可搭配 Filter 寫不同條件。例如:一條路徑寄 Gmail 發出訊息,一條用 LINE 通知。
互動練習
建立一個流程:
- 若氣溫 ≥ 30°C,LINE 推送「高溫警告」。
- 否則 Gmail 寄送「今日氣溫舒適」。
💡 Tips: 使用 Route 模組分流兩條路徑,在每一條路徑上,使用 Filter 進行篩選
4. Markdown format
定義
一種簡單的文字格式化語法,讓您可以用 `#標題`、`**粗體**`、`*斜體*`、`[連結文字](網址)` 等符號來豐富純文字的表現力。
在支援 Markdown 的訊息服務(Line 不支援, Gmail支援)中,您可以用它來產生格式更美觀、更易讀的通知訊息。可以使用 Markdown Editor 測試不同的標籤效用。
類比
像在便簽上的格式化速記符號,例如:用 # 表示標題,用 #### 表示H4標題。
Make 應用示例
- 用 Markdown 排版天氣報告
- 以下是一個 Markdown 格式的內容:
# 今天天氣資訊
#### 座標
- 24.1469
- 120.6839
#### 溫度
- 26.46
#### 濕度
- 92
#### 風力
- 速度:2.57
- 方向:140
互動練習
建立一個流程:
- 從 Weather 模組取得台中目前的氣溫、濕度、風力,
- 用 Markdown 格式化存到一個變數中。
5. HTML (HyperText Markup Language)
定義
HTML 是建立網頁內容結構的標記語言,是網頁的骨架。用標籤(tag)描述內容,如 <h1> 標題、<p> 段落、<a> 連結。你也打開HTML Basic,然後在瀏覽器按右鍵,選擇「檢查網頁原始碼」檢視各種HTML標籤。
從 HTTP 模組得到的 HTML 原始碼充滿了各種標籤(tags)。要從中提取有用資訊,您需要像偵探一樣分析其結構,找到目標資料被包覆在哪個或哪些標籤中。通常會搭配正規表示式(regular express)或文字處理函數來進行解析。
類比
像設計一本書的章節與段落結構,<title>是標題,<h1>是標題1,<h2>是標題2,<p>是段落,<table>是表格。
Make 應用
- 在 Gmail 之前,先將信件內容轉成 HTML 格式,增加可閱讀性
互動練習
建立一個流程:
- 從 Weather 模組取得目前台中的氣溫、濕度、風力,
- 用 Markdown 格式化存到一個變數中。
- 然後將 Markdown 格式轉成 HTML 格式後用 Gmail 寄出。
💡 Tips: 使用 Markdown 模組-> Markdown to HTML 轉換格式
6. HTTP (HyperText Transfer Protocol)
定義
HTTP 是用戶端與伺服器之間的通訊協定,包含方法(GET/POST)、標頭(Headers)、主體(Body)與狀態碼。
使用 HTTP 模組的「Make a request」動作,您可以模擬瀏覽器向目標網址發送一個 GET 請求。伺服器會回應這個請求,並返回該網頁的完整 HTML 原始碼,這就是您爬取到的「原料」。
類比
像寄送與接收公文,信封上的資訊是標頭,內容是主體,回覆的批示是狀態碼。
Make 應用示例
- 用 HTTP 模組發送請求
- 用 GET 方法從 exchange-api 抓美元vs.台幣資訊。
互動練習
建立一個流程:
- 呼叫一個公開的匯率查詢網站所提供的API,觀察回應的狀態碼。
- 若不是 200,就用 Gmail 寄錯誤通知。
- 如果狀態碼為 200 (表示請求成功), 則設定一個變數,其值如下:「xxxx-xx-xx的美元對台幣匯率:xx.xx 」儲存美元對台幣匯率。(例如,2025-08-11的美元對台幣匯率:29.88)
💡 Tips: 使用HTTP Make a request 模組,搭配 Router, Set Variable模組,然後取得{{data.date}}、{{data.usd.twd}} 變數的值
7. JSON(JavaScript Object Notation)
定義
JSON 是一種輕量級的資料交換格式,使用鍵值對與陣列來表示結構化資料。以下是一個典型JSON資料範例:
{
"orderId": "A123",
"buyer": { "name": "Tina", "email": "tina@example.com" },
"items": [
{ "sku": "SKU01", "qty": 2, "price": 300 },
{ "sku": "SKU99", "qty": 1, "price": 1200 }
],
"total": 1800
}
你可以使用 JSON viewer 檢視這段 JSON 資料的內容。
許多現代網站採用前後端分離架構,網頁上的資料是透過 JavaScript 非同步地向後端 API 請求而來的,而這些 API 通常會回傳結構清晰的 JSON 格式資料。如果您能透過瀏覽器的開發者工具找到這些 API 端點,直接請求 JSON 資料會遠比解析混亂的 HTML 來得更簡單、更穩定。
類比
有標籤的資料夾:每頁資料都有欄位標題(鍵 key, 例如 orderId)與內容(值 value, 例如 “A123″),可以有多層資料夾(巢狀結構, 例如 items)。
Make 應用示例
- 使用 API 回傳的資料通常是 JSON,例如 exchange rate API :
互動練習
建立一個流程:
- 呼叫一個公開的匯率查詢網站所提供的API,解析 HTTP 模組輸出的 JSON
- 取出美元對台幣匯率 {{data.usd.twd}} ,組成一句話傳到 LINE:「今日美元對台幣:xx.xx 」。
💡 Tips: 使用HTTP模組的 Make a request 向公開的匯率查詢網站請求資料,並選擇 "✅Parse Response" 解析並提取 JSON 資料
8. API (Application Programming Interface)
定義
API 是軟體間溝通的「接口協議」,定義請求格式、回應內容、存取規則。讓不同系統能交換資料與服務而不必直接存取彼此資料庫。
API 是軟體之間溝通的橋樑。Make 的本質就是一個巨大的 API 整合器,它將數千個服務的 API 封裝成簡單易用的模組。例如,當使用 HTTP 模組時,就是在直接與目標服務的 API 進行對話,這提供了無限的擴充可能性。
類比
餐廳點餐服務員:你告訴服務員(API 請求)要什麼,服務員回來送餐(API 回應)。你不會進廚房(資料庫)直接取食材。
Make 應用示例
- HTTP 模組:可呼叫任何 REST API(GET、POST、PUT、DELETE)。
- 與 Google、Line 等官方模組背後也是透過 API 溝通。
互動練習
建立一個流程:
- 呼叫一個公開匯率查詢網站所提供的API,解析 HTTP 模組輸出的 JSON
- 取出台幣對日圓匯率 {{data.twd.jpy}} ,組成一句話傳到 LINE:「今日台幣對日圓: x.xxxx 」。
💡 Tips: 使用 HTTP 模組的 Make a request 向公開的匯率查詢網站請求資料,並選擇 "✅Parse Response" 解析並提取 JSON 資料
9. Loop(迴圈)與 Iteratoion (迭代)
定義
Loop(迴圈)是一種程式控制結構,允許系統對一組資料重複執行相同的操作,直到達成特定條件或處理完整個集合。Iteration (迭代)是對集合(如bundle, array)中每個元素重複執行相同步驟。
在 Make 中,最常見的迴圈實作方式就是 iterator 模組,它會逐一處理每個 bundle。注意:每次處理一個 bundle,就會累計一次 operation。
類比
想像你有一疊考卷需要批改:
- bundles = 這疊考卷(有N份試卷,就有N個bundle)
- Iterator = 把考卷一份一份拿出來 loop 處理,也就是對每份試卷都進行相同流程(批改、計分、記錄) 直到批改完最後一份,loop 才結束。
Make 應用示例
- 用 Iterator 模組將 Google Sheets 的名單,逐筆對每個收件人寄 Gmail。
- 從 Weather bundles 中逐一取出每天的天氣,分別傳送到 LINE。
one bundle , one execution of your scenario
two bundles, two executions of your scenario
N bundles, N executions of your scenario
由於 make 每個月有固定的 operation 配額,one execution(一次執行)就會用掉一個operation, 因此使用iterator模組需要特別注意。
互動練習
建立一個流程:
- 每天自動從 Weather 模組取得未來 3 天的天氣預報,
- 逐一把每天的日期、溫度、濕度、描述等資訊,傳到 LINE。
💡 Tips: 使用 Weather → Get daily weather forecast(天數設定為 3),之後接續 Tools → Iterator模組(輸入為 Weather 的 bundle 欄位,最後再使用LINE → Send a push message (如果一切正常應該會收到3則分別對應日期的Line訊息)