呃...今天要來聊聊那個...很多人在問的,就是公司人不多,可能就十幾二十個人吧,然後又不想花大錢去買那種很貴的人資系統,啊有沒有辦法...自己弄一個...就是...請假系統出來?免費的最好。答案是可以的,而且說真的,不難。我們今天就來...一步一步把它做出來。
先說結論
簡單講,就是用大家都有的 Google 表單,然後搭配它的好朋友 Google 試算表,最後再加一點點...呃...魔法,也就是一小段程式碼 (Google Apps Script),就可以做到「員工填完請假單,主管自動收到 Email 通知」。 這整套對小團隊或新創公司來說,我自己是覺得,超級夠用。 不過呢,它也有極限,這個我們後面會老實講。
怎麼做:一步一步來設定
好,那我們就從頭開始。這個過程大概分成三個...對,三個主要部分:建立表單、串連試算表,還有最重要的,設定自動化通知。
第一步:把請假表單做出來
首先,你總要有一個讓員工填寫的介面嘛,這就是 Google 表單 (Google Forms) 的工作。 你就直接到 Google 雲端硬碟,新增一個 Google 表單。
那...欄位要有哪些呢?我想一下喔...基本款大概是這樣:
- 姓名: 這個一定要,不然誰請假都不知道。用「簡答」題型。
- 單位/部門: 如果公司有分部門的話,這個就很重要。一樣用「簡答」或「下拉式選單」。
- 電子郵件: 這超重要,後面自動通知要用到。記得在設定裡把「收集電子郵件地址」打開。
- 假別: 這個用「選擇題」或「下拉式選單」最適合。然後啊,那個假別,我自己是覺得...除了我們台灣勞基法規定的那些,像什麼特休、病假、事假...你最好也加上公司自己有的福利假,比如說...呃...生日假?或是有的公司有情緒假之類的,這個就看你們自己公司的文化。
- 開始日期/時間 & 結束日期/時間: 這個就用「日期」和「時間」題型,很直覺。
- 職務代理人: 這也很重要,讓主管知道你請假時工作交接給誰了。
- 事由: 用「段落」題型,讓員工可以簡單說明一下請假的原因。
第二步:讓回應自動存到 Google 試算表
表單做好之後,你點一下頁面頂端的「回覆」頁籤。你會看到一個綠色的...呃...像十字的圖案,點它,然後「建立新的試算表」。
這一步超簡單,但超級關鍵。以後只要有人透過你的 Google 表單送出請假申請,所有資料,包含什麼時候送出的,都會自動、即時地新增到這個 Google 試算表 (Google Sheets) 裡面。 根本不用你手動複製貼上。
第三步:用 Apps Script 設定自動 Email 通知
好,接下來就是重頭戲了,就是要讓系統在有人填單後,自動寄信通知主管。這個要用到一個...呃...有點像小程式的東西,叫做 Google Apps Script。 你不要聽到程式就怕,真的,我會給你一段可以直接複製貼上的範本。
在剛剛那個試算表頁面,點上面工具列的「擴充功能」,然後選「Apps Script」。
進去之後,把裡面預設的程式碼全部刪掉,然後貼上這段:
function onFormSubmit(e) {
// 這一段是用來抓取剛剛填寫的表單資料
const response = e.values;
const timestamp = response;
const email = response;
const name = response;
const department = response;
const leaveType = response;
const startDate = response;
const endDate = response;
const reason = response;
// 這邊設定你的主管的 Email
const managerEmail = "manager-email@yourcompany.com";
// 信件標題
const subject = `[請假申請] ${name} - ${department}`;
// 信件內容,你可以自己改
const body = `
哈囉主管,
${department} 的 ${name} 提出了請假申請。
以下是詳細資訊:
- 申請人 Email: ${email}
- 假別: ${leaveType}
- 開始時間: ${startDate}
- 結束時間: ${endDate}
- 事由: ${reason}
這封信是系統自動發出的,請知悉。
`;
// 寄出 Email
GmailApp.sendEmail(managerEmail, subject, body);
}
貼上之後,記得把 `manager-email@yourcompany.com` 換成你主管真正的 Email 地址。然後按一下存檔圖示。
啊寫好程式還沒完喔,你要告訴 Google 什麼時候去跑這段程式碼。這個叫做「觸發條件」。 在左邊的選單點那個像時鐘的圖案,也就是「觸發條件」。然後點右下角的「新增觸發條件」。
- 選擇要執行的功能:選 `onFormSubmit`。
- 選取活動來源:選「從試算表」。
- 選取活動類型:選「提交表單時」。
然後儲存。第一次儲存時,Google 會跳出來跟你要一堆權限,問你同不同意這個程式去讀取你的資料、用你的 Gmail 寄信等等。 你就勇敢地按下「允許」,因為這個程式是我們自己寫的,很安全。
好了!這樣就大功告成了。你可以自己去填一次表單,測試看看主管的信箱會不會收到信。
這方法的限制,老實說...
不過呢,這方法雖然免費又好用,但它不是萬能的。 我覺得還是要老實說一下它的缺點,你才知道它適不適合你們公司。
- 沒有真正的「簽核」流程: 你看喔,這個流程只是「通知」,它沒有一個...呃...「簽核」的按鈕。主管收到信,要怎麼同意?他還是得回信說「OK」,或是你得自己手動在那個 Google 試算表上面多加一欄,自己打勾寫「已核准」。很人工啦,說真的。進階一點雖然可以做到點擊信中連結來核准,但那個 script 會複雜很多。
- 很難應付多人和複雜規則: 如果你公司只有 10 個人,OK,很夠用。但 50 個人、100 個人呢?那個試算表會變得...超・級・長。主管光看就頭暈了。而且如果不同的人要給不同的主管簽,或是請假要會簽兩三層,這個 script 就會變得很複雜。
- 出錯了你可能不知道: 還有啊,如果那個 Apps Script...萬一...跑錯了怎麼辦?比如說 Google 系統那天剛好不穩,信沒寄出去,你可能也不知道。它不像專業系統會跳錯誤通知或是有 log 讓你查。
- 報表功能很陽春: 主管想看「這個月誰請了最多天病假?」或是「特休還剩幾天?」,這個系統沒辦法直接告訴你。你得自己去試算表裡面用公式、做樞紐分析表,慢慢算。
那跟專業的人資系統比起來呢?
說了這麼多,你可能會想,啊所以這個 DIY 的方法跟市面上那些要錢的...呃...專業人資系統,到底差在哪?我弄了個簡單的比較表,讓你一目了然。
| 功能 | Google 表單 DIY 系統 | 專業人資系統 (例如:CharlieHR, Quantum Workplace) |
|---|---|---|
| 建置成本 | 幾乎是零,就你的時間而已。 | 要錢,通常是看人數和功能,每個月都要付費。 |
| 簽核流程 | 很陽春,就只是Email通知。要做到點擊核准需要很複雜的 script。 | 很完整,可以直接在系統上按「同意」或「拒絕」,甚至設定多層簽核。 |
| 排班/行事曆整合 | 可以做到,但要再另外寫一段 Apps Script,把假單自動同步到 Google Calendar。 | 通常是內建功能,核准後假單會自動出現在團隊共用的行事曆上。 |
| 報表與統計 | 幾乎沒有。你要自己手動去試算表拉資料、做圖表。 | 非常強大。可以直接產出各種圖表,像是個人剩餘假期、部門請假率等等。 |
| 維護與除錯 | 全部要靠自己。程式碼出錯、Google 服務更新,你都要自己想辦法解決。 | 有專人客服。系統有問題直接找他們就好。 |
常見問題,我猜你會問
嗯...講到這裡,我猜你心裡可能還有幾個問題。
-
可以讓主管直接在 Email 裡按按鈕核准嗎?
這個超多人問。答案是...可以,但很麻煩。 你需要把那個 Apps Script 部署成「網路應用程式」,然後在 Email 裡產生兩個特別的網址,一個代表核准,一個代表拒絕。主管點了之後會觸發程式去更新試算表的狀態。這個對新手來說真的有點門檻,我們今天先不碰這塊。
-
可以跟 Google Calendar 連動嗎?
絕對可以!這也是用 Apps Script 辦得到。 你可以讓它在...比如說,主管在試算表上手動把狀態改成「已核准」之後,程式就自動把這個假單的起訖時間,寫進一個團隊共用的 Google Calendar。這樣大家就知道誰什麼時候不在。這個功能超實用,但程式會再長一點點。
-
我的假單要給 A 主管簽,同事的要給 B 主管簽,怎麼辦?
這也是進階問題了。要做到這個,你需要在 Apps Script 裡面或是在試算表多加一個分頁,去建立一個...呃...對照表,比如說哪個部門、或是誰的假單,要寄給哪個主管的 Email。然後你的程式碼就要先去查這個表,再決定信要寄給誰。Doable,但 script 就會變得比我們剛剛那個範例複雜許多。
總結一下,這個 Google 表單請假系統,我自己是覺得...對於新創公司、小團隊、或是預算有限的部門來說,真的是一個超棒的起點。 它雖然陽春,但解決了最核心的「記錄」和「通知」問題。等到你的團隊變大了,流程變複雜了,到時候再去評估導入專業的人資系統,也完全不遲。
那你呢?你覺得這個方法最吸引你的地方是什麼?還是你覺得哪個限制最讓你卻步?在下面留言聊聊你的看法吧!
