Google表單請假系統怎麼做?設定步驟與自動化通知實作教學

Published on: | Last updated:

呃...今天要來聊聊那個...很多人在問的,就是公司人不多,可能就十幾二十個人吧,然後又不想花大錢去買那種很貴的人資系統,啊有沒有辦法...自己弄一個...就是...請假系統出來?免費的最好。答案是可以的,而且說真的,不難。我們今天就來...一步一步把它做出來。

先說結論

簡單講,就是用大家都有的 Google 表單,然後搭配它的好朋友 Google 試算表,最後再加一點點...呃...魔法,也就是一小段程式碼 (Google Apps Script),就可以做到「員工填完請假單,主管自動收到 Email 通知」。 這整套對小團隊或新創公司來說,我自己是覺得,超級夠用。 不過呢,它也有極限,這個我們後面會老實講。

怎麼做:一步一步來設定

好,那我們就從頭開始。這個過程大概分成三個...對,三個主要部分:建立表單、串連試算表,還有最重要的,設定自動化通知。

第一步:把請假表單做出來

首先,你總要有一個讓員工填寫的介面嘛,這就是 Google 表單 (Google Forms) 的工作。 你就直接到 Google 雲端硬碟,新增一個 Google 表單。

那...欄位要有哪些呢?我想一下喔...基本款大概是這樣:

  • 姓名: 這個一定要,不然誰請假都不知道。用「簡答」題型。
  • 單位/部門: 如果公司有分部門的話,這個就很重要。一樣用「簡答」或「下拉式選單」。
  • 電子郵件: 這超重要,後面自動通知要用到。記得在設定裡把「收集電子郵件地址」打開。
  • 假別: 這個用「選擇題」或「下拉式選單」最適合。然後啊,那個假別,我自己是覺得...除了我們台灣勞基法規定的那些,像什麼特休、病假、事假...你最好也加上公司自己有的福利假,比如說...呃...生日假?或是有的公司有情緒假之類的,這個就看你們自己公司的文化。
  • 開始日期/時間 & 結束日期/時間: 這個就用「日期」和「時間」題型,很直覺。
  • 職務代理人: 這也很重要,讓主管知道你請假時工作交接給誰了。
  • 事由: 用「段落」題型,讓員工可以簡單說明一下請假的原因。
設計一個清晰的 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 寄信等等。 你就勇敢地按下「允許」,因為這個程式是我們自己寫的,很安全。

好了!這樣就大功告成了。你可以自己去填一次表單,測試看看主管的信箱會不會收到信。

在 Apps Script 編輯器中設定自動化腳本是整個流程的核心。
在 Apps Script 編輯器中設定自動化腳本是整個流程的核心。

這方法的限制,老實說...

不過呢,這方法雖然免費又好用,但它不是萬能的。 我覺得還是要老實說一下它的缺點,你才知道它適不適合你們公司。

  • 沒有真正的「簽核」流程: 你看喔,這個流程只是「通知」,它沒有一個...呃...「簽核」的按鈕。主管收到信,要怎麼同意?他還是得回信說「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 表單請假系統,我自己是覺得...對於新創公司、小團隊、或是預算有限的部門來說,真的是一個超棒的起點。 它雖然陽春,但解決了最核心的「記錄」和「通知」問題。等到你的團隊變大了,流程變複雜了,到時候再去評估導入專業的人資系統,也完全不遲。

那你呢?你覺得這個方法最吸引你的地方是什麼?還是你覺得哪個限制最讓你卻步?在下面留言聊聊你的看法吧!

Related to this topic:

Comments

撥打專線 LINE免費通話