軟體基本概念

使用make平台設計自動化流程需要具備的軟體基礎知識

在 Make 平台進行自動化設計之前,理解一些軟體工程與資料處理的基礎概念,能夠讓你設計出更精確、穩定且可維護的流程。本文將透過核心概念,結合 Weather、HTTPLine、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:時間戳記
  1. 每天早上 7 點用 Weather 模組抓取氣溫。
  2. 用 Set variable 將氣溫存成 varTemperature。
  3. 用  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()
  1. 每天早上 7 點用 Weather 模組抓取氣溫與濕度。
  2. 新增 Tools → Set Variable 模組,在變數名稱(例如 體感溫度 )中輸入計算公式(計算函式):體感溫度 = 氣溫 + (濕度 / 100) * 4
  3. 使用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

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,解析 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。
  • 每天自動從 Weather 模組取得未來 3 天的天氣預報,
  • 逐一把每天的日期、溫度、濕度、描述等資訊,傳到 LINE。
💡 Tips: 使用 Weather → Get daily weather forecast(天數設定為 3),之後接續 Tools → Iterator模組(輸入為 Weather 的 bundle 欄位,最後再使用LINE → Send a push message (如果一切正常應該會收到3則分別對應日期的Line訊息)