歡迎來到 A-Level IT 學習筆記:郵件合併 (Mail Merge) (主題 18)

你好,未來的 IT 專業人士!你已經來到 A-Level 實作部分的一個關鍵章節:郵件合併 (Mail Merge)。別被這個名稱嚇到了!它其實是批量生成數千份個性化文件最有效的方法,省去了逐一打字的麻煩。

試想一下:如果你需要寄出 500 封內容大致相同的邀請函,但每封信都需要填上不同的姓名和地址,手動製作的話可能需要幾天時間。郵件合併就能解決這個問題,讓你快速且準確地創建定制化的通訊文件。掌握這個主題對於你在 Paper 4 取得好成績至關重要!

18.1 理解郵件合併:為什麼要用它?

什麼是郵件合併?(何時使用以及為何使用)

郵件合併是一種結合兩個主要文件的程序:一個包含標準內容的「通用文件」(Generic document),以及一個包含每個收件人獨特、個性化資訊的「數據文件」(Data file)。

郵件合併的核心目的是大規模定制 (Mass customization)。 它不僅節省時間、減少手動輸入數據帶來的錯誤,還能確保通訊內容在發送給龐大的受眾時,依然保有個人化的感覺。

類比:餅乾模具與食材

想像你在烤餅乾:

  • 餅乾模具就是主文件 (Master Document)(固定的模板)。
  • 食材/配料(姓名、地址、口味)就是數據源 (Data Source)(可變動的數據)。
  • 切割與加上配料的過程就是郵件合併 (Mail Merge)

兩個必要組件

要進行郵件合併,你絕對需要這兩個要素:

  1. 主文件 (Master Document / Main Document):

    這份文件包含對每個收件人來說都相同的固定標準文字和版面。它還包括合併欄位 (Merge Fields)——這是一種特殊的佔位符,用於插入獨特的數據。

    主文件可用於各種輸出形式,包括:

    • 信件 (Letters):正式或非正式的個性化通訊。
    • 標籤 (Labels):用於信封地址或產品標籤(包括用於特定尺寸的自定義標籤)。
    • 目錄 (Directory):將多個收件人或數據記錄連續列在同一份文件中的格式(常用於商品目錄或會員名單)。

  2. 數據源 (Data Source / Source File):

    這是一個(通常是試算表、資料庫表格或 CSV 檔案)包含可變動資訊的檔案,這些資訊按列(記錄,Records)和欄(欄位,Fields)進行組織。

    課程要求你了解如何使用適當的軟件來建立/編輯和運用源數據(例如,使用資料庫程式來管理列表,或使用試算表在合併前清理和轉換數據)。

快速複習:核心需求

郵件合併需要一個主文件(模板)和一個數據源(獨特數據)。它們必須通過匹配的欄位標題(稱為欄位名稱,Field Names)來進行連結 (Linked)

連結與設定合併欄位

連結檔案與識別欄位名稱

最關鍵的技術步驟是將主文件連結到數據源。當執行此連結時,軟件會讀取數據源的第一列來識別欄位標題,這些標題會成為你的欄位名稱(例如 <<Title>>, <<Surname>>)。

給同學的小貼士:確保數據源中的欄位標題簡短、唯一,且不含空格或特殊字元。這能防止連結時出現錯誤。

主文件可能還需要插入所有輸出物共有的靜態物件,例如嵌入圖表或表格。這些內容屬於標準模板的一部分,而非個人化數據。

插入標準合併欄位

連結後,你可以在主文件中插入佔位符。你必須具備以下插入能力:

  • 指定的合併欄位 (Specified Merge Fields):來自數據源的實際欄位(例如,插入 <<AddressLine1>>)。
  • 文件屬性 (Document Properties):有關檔案本身的資訊,例如檔案作者或標題。
  • 文件欄位 (Document Fields):自動資訊,例如頁碼或順序編號。
  • 日期/時間欄位 (Date/Time Fields):自動插入當前日期或文件列印日期。

進階欄位設定:互動性與自動化

課程要求了解超越簡單數據插入的欄位。這些欄位在合併過程中增加了互動性或執行自動化任務。

供手動完成的欄位(用戶互動)

這些欄位會提示用戶輸入,確保納入特定的、非資料庫內的資訊,或者允許用戶在最後一刻做出決定。

設定這些欄位時,你必須為用戶創建適當的提示 (Prompts),讓他們清楚知道該輸入什麼數據。

1. Ask 欄位

Ask 欄位會在合併開始時執行一次。它會提示用戶輸入一段資訊,該資訊將在所有生成的文件中保持一致。
範例:如果你正在合併 100 封信,但需要指定「核准此項銷售的經理姓名」,且這 100 封信的經理都是同一人,你就可以使用 Ask 欄位

2. Fill-in 欄位

Fill-in 欄位會針對每一份單獨的文件提示用戶輸入資訊。這通常用於最終文件開啟或列印時,允許進行獨特的手動補充。
範例:醫生在合併 50 封預約信時,可以使用 Fill-in 欄位為每位特定病人手動輸入「下次預約日期」。

供自動完成的欄位(計算)

你必須能夠設定自動完成計算的欄位,包括插入公式
範例:如果你的數據源包含 <<BaseSalary>> 和 <<BonusRate>>,你可以在主文件中插入一個公式欄位來計算總薪資:總薪資 = <<BaseSalary>> * (1 + <<BonusRate>>)

你知道嗎?

你會使用這些欄位,是因為所需的數據(例如公式計算結果或經理姓名)要麼未存儲在數據源中,要麼是在合併過程中動態生成的。這就是何時以及為何需要設定這些欄位的原因

指定收件人選擇規則

你通常不需要將相同的訊息發送給資料庫中的每個人,或者你可能希望信件內容根據收件人的數據而改變。這就是指定規則 (Specifying Rules)發揮作用的地方——它利用條件邏輯來控制輸出。

選擇與排序收件人

在執行合併之前,你可以控制哪些記錄被處理:

  • 編輯:手動添加或刪除收件人列表中的個別記錄。
  • 排序:排列記錄(例如,按郵遞區號的升序進行合併)。
  • 篩選:根據條件選擇收件人(例如,僅包含 <<City>> 等於 'Manchester' 的收件人)。這是實作考試中的常見要求。

使用條件欄位排除收件人

條件欄位會根據應用於數據的規則插入特定文字或完全跳過該記錄。這通常通過 IF 語句實現。

1. If Then Else

此規則根據條件決定插入什麼內容:如果 (條件為真) 則 (插入文字/欄位 1) 否則 (插入文字/欄位 2)

範例: If <<PremiumCustomer>> = 'Yes',Then 包含短語 "你有資格享受我們的 VIP 折扣," Else 包含短語 "請瀏覽我們的網站獲取最新優惠。"

2. Skip Record If

此規則用於從最終合併輸出中排除收件人。如果條件滿足,軟件會停止處理該記錄並移至下一個,而不會為該被跳過的記錄生成文件。

範例: Skip Record If <<AccountStatus>> = 'Inactive'。(我們不想給無效帳戶寄信。)

3. Next Record If

此規則告訴合併軟件前進到數據源中的下一條記錄,而不開始新文件或標籤

使用場景:這主要用於設定標籤目錄時,當多個記錄需要並排或連續出現在同一個物理文件空間內時使用。

何時以及為何需要指定規則:指定規則是為了確保數據完整性相關性。它們保證了敏感或條件性的資訊(如價格變動或折扣)僅出現在適用該條件的收件人信件中,並確保不會在不適用的記錄上浪費資源(例如跳過記錄)。

重點總結

  • 郵件合併組件:主文件(模板)+ 數據源(可變數據)。
  • 輸出類型:信件、標籤和目錄。
  • 欄位類型:標準合併欄位、文件屬性和日期/時間欄位。
  • 手動欄位:Ask(為所有文件進行一次提示)和 Fill-in(為每份文件/記錄提示)。
  • 控制規則:使用排序(整理輸出順序)和篩選(選擇收件人)來管理包含對象。
  • 條件邏輯:使用 If Then Else(改變內容)和 Skip Record If(完全排除文件)。