人資與行政的噩夢:每個月一次的手工複製貼上地獄
如果你曾經在中小企業擔任過人資 (HR) 或行政助理,你一定對每個月初的「發薪日」感到既期待又怕受傷害。 期待的是自己可以領到薪水,害怕的是你必須要發薪資條給全公司 100 位員工。
傳統的做法是:打開一個 Word 檔,複製 A 員工的名字、底薪、獎金、勞健保扣款,貼上。然後把這個 Word 檔轉成 PDF。打開 Email,輸入 A 員工的信箱,附上 PDF,發送。 然後重複這個動作 100 次!如果中途複製貼上眼花貼錯了,把總經理的薪水寄給了工讀生,那可是會引發一場職場大地震的。
在 Vibe Coding 的世界裡,「只要是重複三次以上的動作,就應該交給機器人處理」。 今天,我們就要教你如何用一個按鈕,在 3 秒內自動寄出 100 封客製化的薪資通知信!
步驟一:準備你的 Google Sheet 資料庫
請打開一個空白的 Google Sheet,並建立一個名為「薪資表」的工作表。 在第一列 (A1 到 E1) 輸入以下標題:
- A 欄:員工姓名 (Name)
- B 欄:電子信箱 (Email)
- C 欄:本月底薪 (Base Salary)
- D 欄:本月獎金 (Bonus)
- E 欄:已發送狀態 (Status)
接著,在下方填入幾筆你自己的信箱作為測試資料。
步驟二:Vibe Prompt 詠唱!一鍵群發腳本
這段程式碼的邏輯稍微複雜一點,因為我們希望:
- 每一封信件的內容都是「客製化」的(信件裡要有該員工的專屬姓名與金額)。
- 發送過的人,要在 E 欄標記為「已發送」,避免手滑點到兩次重複發送。
請打開 擴充功能 -> Apps Script,然後對 Cursor 下達這段專業咒語:
【自動群發薪資條 Vibe Prompt】 我正在撰寫 Google Apps Script。我有一個名為「薪資表」的試算表。 表單的欄位依序為:A(姓名)、B(信箱)、C(底薪)、D(獎金)、E(發送狀態)。第一列是標題。
請幫我寫一個 function
sendSalaryEmails。邏輯如下:
- 從第二列開始逐行讀取資料。
- 檢查 E 欄 (發送狀態)。如果已經標記為
已發送,則跳過這行不處理。- 如果沒有標記,請計算「實領總額」= 底薪 + 獎金。
- 使用
MailApp.sendEmail發送信件。 信件主旨為:「[員工姓名] 先生/小姐,您本月的薪資明細已核發」。 信件內容請客製化,例如:「親愛的 [員工姓名] 您好:本月您的底薪為 [底薪] 元,獎金為 [獎金] 元,實領總額為 [實領總額] 元。辛苦了!」- 發送成功後,將該行的 E 欄標記為
已發送。- 請加上詳細的中文註解。
AI 產出的神級自動化腳本:
function sendSalaryEmails() {
const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('薪資表');
const data = sheet.getDataRange().getValues();
// 第一列是標題,所以從 i = 1 (第二列) 開始
for (let i = 1; i < data.length; i++) {
const row = data[i];
const name = row[0]; // A欄: 姓名
const email = row[1]; // B欄: 信箱
const baseSalary = row[2]; // C欄: 底薪
const bonus = row[3]; // D欄: 獎金
const status = row[4]; // E欄: 發送狀態
// 如果已經發送過,或是信箱是空的,就跳過
if (status === '已發送' || !email) {
continue;
}
// 計算實領總額 (確保是數字型態相加)
const totalSalary = Number(baseSalary) + Number(bonus);
// 組合信件主旨與內容
const subject = `${name} 先生/小姐,您本月的薪資明細已核發`;
const body = `親愛的 ${name} 您好:\n\n感謝您這個月的辛勞!以下是您本月的薪資明細:\n\n底薪:${baseSalary} 元\n獎金:${bonus} 元\n----------------\n實領總額:${totalSalary} 元\n\n若有任何問題請隨時回信詢問人資部。祝您順心!`;
try {
// 發送 Email
MailApp.sendEmail(email, subject, body);
// 發送成功後,在 E 欄寫入「已發送」標記
// 注意:getRange 的列與欄都是從 1 開始算,所以是 i + 1 列,第 5 欄 (E欄)
sheet.getRange(i + 1, 5).setValue('已發送');
Logger.log(`已成功發送薪資條給:${name}`);
} catch (error) {
Logger.log(`發送給 ${name} 時發生錯誤:${error}`);
}
}
}
步驟三:製作一個「發薪水」專屬按鈕
程式寫好了,總不能每個月都叫老闆打開程式碼編輯器去按「執行」吧?萬一老闆按錯刪掉程式碼就慘了。 我們要為這個程式在表單上做一個「按鈕」。
- 回到 Google Sheet 畫面。
- 點擊上方選單:
插入->繪圖。 - 在繪圖區塊中,畫一個漂亮的圓角矩形,裡面打上文字:「寄發本月薪資條」,並把它填上顯眼的藍色。
- 點擊右上角的「儲存並關閉」。這時表單上會出現這個按鈕圖形。
- 在按鈕圖形的右上角點擊三個點 (
...) -> 選擇 「指派指令碼」。 - 輸入我們剛剛寫好的 function 名稱:
sendSalaryEmails,按下確定。
見證奇蹟的時刻 🎉
現在,只要你每個月把薪資表填好,然後深呼吸,用滑鼠點一下表單上那個藍色的「寄發本月薪資條」按鈕。 你會看到畫面右下角出現「執行指令碼...」。然後,E 欄的格子開始一格一格地自動填上「已發送」!
大約過了 5 秒鐘,全公司 100 個人的客製化薪資條,就已經全數躺在他們的信箱裡了。 而你,原本每個月要花三天加班處理的苦差事,現在只剩下 5 秒鐘,剩下的時間你可以優雅地去泡杯咖啡。這,就是 Vibe Coding 自動化的浪漫!
在下一章,我們將探討 GAS 的一些進階陷阱:排程失敗怎麼辦?時區錯亂怎麼辦?教你如何打造一個堅不可摧的企業級自動化系統。
🎁 [VIP 專屬加碼] GAS 極致擴充:串接 OpenAI 與 LINE Notify
在學會了基礎的 GAS 表單自動化後,你已經可以幫行政人員省下大量的時間了。 但如果我們把 GAS 這個免費的後端,加上「AI 的大腦 (OpenAI)」與「最強的通知渠道 (LINE)」,這套系統的商業價值將會呈現指數型爆炸。
想像一個情境:「當客人填寫 Google 表單客訴時,系統自動讓 AI 分析客訴情緒,如果情緒極度憤怒,立刻透過 LINE 傳送警報給老闆的群組。」 這個功能在市面上,至少可以向企業收取每月 3000 元的維護費。而你,只需要花 15 分鐘。
1. LINE Notify 串接實戰 (免審核、免月費)
比起正規的 LINE 官方帳號 (Messaging API),LINE Notify 是一個極度輕量、適合用來做內部警報的工具。 你只需要去 LINE Notify 官網申請一組權杖 (Token)。
✅ Vibe Prompt 示範:
「我目前在 Google Apps Script (GAS) 環境中。
- 請幫我寫一個函式
sendLineNotify(message)。- 請使用
UrlFetchApp.fetch呼叫 LINE Notify 的 API (網址:https://notify-api.line.me/api/notify)。- Headers 請帶上
Authorization: Bearer [你的Token]。- Payload 為
{ "message": message }。- 請加上 try-catch 錯誤處理。」
這段不到 10 行的程式碼,就是你建立所有「自動化報警系統」的核心基石。
2. OpenAI API 串接:讓試算表擁有智商
GAS 最強大的地方在於它的 UrlFetchApp 可以呼叫全世界任何 API。
你可以寫一個自訂函數,讓 Google Sheet 的儲存格直接變成 ChatGPT!
✅ Vibe Prompt 示範:
「請在 GAS 中寫一個自訂函式
ASK_AI(prompt, text)。
- 呼叫 OpenAI 的
https://api.openai.com/v1/chat/completionsAPI。- 使用
gpt-4o-mini模型。- 將使用者的 prompt 與 text 組合送出,並解析回傳的 JSON 結果。
- 把這個函式設計成可以讓我在 Google 試算表的儲存格中直接使用 (例如輸入
=ASK_AI("請幫我把這句話翻譯成日文", A1))。」
當你把這個腳本貼進去後,你的客戶在 Google 試算表裡面,只要拉一下十字游標,整排的商品文案就會被 AI 自動翻譯好、或是自動寫好社群貼文!
3. 銷售自動化專案的終極話術
當你把這些技術組合在一起時,你賣的已經不是「幫你寫個腳本」,而是「幫你省下一個助理的薪水」。
「老闆,你們現在請工讀生每天看報表、回訊息,一個月至少要花兩萬。我幫你導入這套 AI 表單自動化系統,建置費收你三萬就好。以後系統 24 小時幫你監控客訴、自動發信、自動推播 LINE 群組,不會生病也不會遲到。」
這種「以投資回報率 (ROI)」為導向的談判話術,就是你透過這門課學到最珍貴的財富。去向市場證明你的價值吧!