iT邦幫忙

0

【kintone 應用程式模板】出勤管理模板組的設計思路:原生功能、免費外掛、用群組管權限

  • 分享至 

  • xImage
  •  

在 kintone 上,如果權限是綁在個別使用者身上,那麼每次有人到職、離職或調動,就得一支一支打開 App,逐筆修改權限與簽核對象,App 一多很容易漏掉。

這篇用一套出勤管理模板組(員工名簿、上下班打卡、休假申請三支 App)為例,整理三個設計重點:

  1. 盡量用 kintone 原生功能(Lookup、計算欄位、流程管理),不寫程式也能做到相當完整。
  2. 原生做不到的小地方,用 官方免費外掛 補,先別急著客製開發。
  3. 用 cybozu.com 共通管理的 群組(角色) 管權限,讓人員異動時權限自動跟著走。

三點中又以第 3 點(用群組管權限)最關鍵。

模板組總覽

三支 App 放在同一個 space,彼此用 Lookup 串接:

App 角色定位 流程管理 關鍵設計
員工名簿 主檔,單一資料來源 員工資料只在這裡維護一次,各類申請都可以由此帶入員工資料
上下班打卡 每日打卡、自動算工時/加班時數 單一動作(未處理→下班打卡→完成) Lookup 員工名簿、計算欄位算時數
休假申請 請假簽核 多關卡簽核 Lookup 帶主管、群組欄位驅動審核

員工名簿是源頭,另外兩支都向它 Lookup 取資料。它的欄位如下:

欄位 型態 說明
員工編號 單行文字 必填、唯一、標題欄位
員工登入帳號 單行文字 必填、唯一,另兩支 App 的 Lookup key
員工姓名 單行文字 必填
員工 使用者選擇 對應 kintone 登入帳號
所屬部門 組織選擇 在公司結構中的位置
所屬部門主管 群組選擇 這個人的主管
所屬身份 群組選擇 在系統中扮演的角色

注意最後三個欄位:所屬部門用「組織選擇」,部門主管與所屬身份用「群組選擇」。這個區分在第三節會用到。

圖1:space 內三支 App,並標示「上下班打卡」「休假申請」皆 Lookup 自「員工名簿」

設計一:盡量用原生功能

kintone 的原生功能可以涵蓋多數場景,而且不用授權費、不用維護、官方升級保證相容。這套模板組三支 App 加起來十幾個計算欄位、一條多關卡流程,沒有寫 JavaScript。

Lookup:資料只輸入一次

員工的編號、姓名、部門只在員工名簿維護一次,打卡與請假時即可透過 Lookup 一鍵帶入最新資料。

圖2:「上下班打卡」的 Lookup 欄位設定(關聯 App=員工名簿、複製來源=員工登入帳號、其他複製欄位)

LOGINUSER():每個人預設只看到自己

打卡與請假的 Lookup 都加了一條「取得記錄的條件」:

員工 in (LOGINUSER())

員工按 Lookup 的「選取」時,預設只篩出登入者本人那一筆,不必在名單裡找自己,也不會誤選到同事。這是在表單行為層做自助化,不需要另外設記錄權限。

計算欄位:工時、加班時數、休假日數自動算

時數相關的欄位全部用原生計算公式:

  • 工作時數 = 下班時間 − 上班時間 − 休息時間(計算欄位)。
  • 加班時數 依勞基法加班倍率級距,分攤到「加班時數 1.0/1.34/1.67/2.0/2.67」幾個欄位。這些欄位存的是各倍率對應的加班分鐘數,不是金額;要算加班費還得再乘時薪,本模板沒做到那一步。
  • 星期 也用計算欄位推算(輸出星期字串),供人工選填「出勤區分(工作日/休息日/例假日/休假日)」時參考;出勤區分本身是下拉欄位,不會自動判定。

休假申請的日數換算:

休假日數   = 休假時數(小時) / 8     (每筆休假明細)
休假總日數 = SUM(休假日數)          (子表格彙總)

ℹ️ 子表格內另有「休假時數(分)=休假時數×60」供其他用途,但日數換算用的是小時欄位。

流程管理:簽核不用客製

休假申請的簽核用 kintone 內建的流程管理:

未處理 →〔送出申請〕→ 部門主管審核中 →〔核准〕→ 已核准
        →〔已休假〕→ 人事確認中 →〔完成〕→ 已完成
分支:部門主管審核中〔駁回〕→ 已駁回;已核准〔取消〕→ 已取消

狀態、動作、分支、誰能在哪一關動作,都在流程管理設定裡完成,不用寫程式。

設計二:原生做不到的,用官方免費外掛補

不過仍有少數地方原生做不到。處理順序建議是:

能用原生就原生 → 原生做不到用官方免費外掛 → 需要支援保固再上第三方商用外掛 → 都不行才客製開發。

每往後一步,成本與維護負擔就高一級:

方案 授權費 維護負擔 適用時機
原生功能 無(官方升級保證相容) 第一優先
官方免費外掛 依現狀提供,留意支援範圍 原生做不到的小功能
第三方商用外掛 月/年費 廠商支援保固 需要支援、功能完整
客製開發(JS/API) 開發成本 自負、需長期維護 前面都不行才動用

台灣 Cybozu 官方提供了一系列免費外掛,能補上不少原生差一步的功能。這套模板組裡,原生做不到的有三處。

ℹ️ 台灣 Cybozu 官方提供之免費外掛僅供台灣簽約客戶申請使用,如有需求,請與您的業務專員聯繫。

自動產生休假申請編號

「休假申請編號」需要唯一值。原生可以設「值為唯一」,但無法自動產生有格式的編號。可搭配官方免費的〖自動編號擴充外掛〗,依「固定文字+日期+序號」規則在建立記錄時自動編號。

ℹ️ 本模板目前的編號欄位是「唯一、可手填」,尚未掛上此外掛,強烈建議搭配。

按「下班打卡」自動寫入當下時間

希望員工按下〔下班打卡〕動作時,系統把當下時間 NOW() 寫進「下班時間」。原生時間欄位無法一鍵填入當下時間(僅有建立記錄時可選預設值帶入當下時間),下班打卡時要手動輸入時間,較不方便。這裡用官方免費的〖條件計算外掛〗達成,設定為:

  • 觸發條件:執行〔下班打卡〕動作(未處理 → 完成)時
  • 寫入欄位:下班時間
  • 值:NOW()

💡 〖條件計算外掛〗是把計算結果寫入欄位;另一支名字相近的〖條件格式外掛〗只改欄位的字色/底色,不寫值,別選錯。

在打卡記錄上顯示當天的請假申請

員工看某天的打卡記錄時,常想順帶確認那天有沒有自己的請假。但打卡與請假是兩支 App,原生的「關聯記錄一覽」比對的是頂層欄位,無法對「本人」與「子表格裡的休假日期」做篩選,做不到這個需求。這裡用官方免費的〖進階關聯記錄清單外掛〗,在打卡記錄上嵌入一份請假申請清單,篩選條件為:

  • 只顯示登入者本人的請假申請
  • 且休假表格(子表格)的休假日期,對應到這筆打卡的日期

員工不必切到休假申請 App,就能在當天的打卡記錄上看到自己當天的請假狀況。

圖3:「上下班打卡」以〖進階關聯記錄清單外掛〗嵌入的請假清單,篩選=本人+子表格休假日期等於打卡日期

輕量版的替代做法

kintone 簡易版(輕量版)不能使用外掛、API 與 JavaScript。遇到輕量版客戶,上面兩處改用原生替代:

標準版+外掛 輕量版替代 取捨
〖自動編號擴充外掛〗產生編號 ① 改用內建「記錄號碼」當編號;② 使用單行文字方塊的自動計算,透過公式將多個欄位的值自動結合,依據業務邏輯產生複合鍵值 ① 保證唯一,但只能是純流水號;② 啟用自動計算後,該欄位將無法啟用「值為唯一」設定,因此必須確保結合邏輯本身能保證唯一性,以避免重複鍵值
〖條件計算外掛〗寫入下班時間 改為人工編輯記錄,輸入下班時間後保存 無法對應「按下動作那一刻」
〖進階關聯記錄清單外掛〗顯示當天請假 改用原生「關聯記錄一覽」或省略 只能比對頂層欄位,無法精準篩到當天的請假

設計三:用群組(角色)管權限

人員一異動就得逐支 App 改權限,根源在於把權限綁在「某個人」身上。改善的做法是綁在「群組(角色)」上。

組織與群組的差別

cybozu.com 共通管理裡有兩套互相獨立的使用者分類:

組織(部門) 群組(角色/role)
結構 階層式(公司→事業部→課) 扁平、橫向的集合
回答 他在公司結構中的位置 他扮演什麼角色
例子 業務二課、人事部 各部門主管、人事
一人可屬於 多個 多個

一位使用者可以同時屬於多個組織與多個群組。這也是員工名簿欄位的設計依據:所屬部門用「組織選擇」記位置,所屬部門主管、所屬身份用「群組選擇」記角色。

圖4:cybozu.com 共通管理的群組清單與成員

權限綁「人」與綁「群組」的差別

kintone 的存取權限(App/記錄/欄位)與流程管理的執行者,指派對象都可以是使用者、組織或群組。綁的對象不同,維護成本差很多:

綁個別使用者 綁群組(角色)
新人到職 逐支 App 補權限與簽核,常漏 把人加進群組,相關 App 自動就位
離職 逐支 App 找名字刪掉 從群組移出,相關權限同步失效
升任/調動 每支 App 逐筆換名字 改群組成員即可,App 設定不動
稽核 權限列表都是人名 以角色呈現,語意清楚

關鍵在於 kintone 判定權限時是即時展開群組的當前成員。所以在共通管理改一處群組成員,所有引用該群組的 App 權限與流程執行者就同步生效,App 端不用動。

本模板:流程審核者用群組欄位指派

休假申請每一關的執行者都不是寫死某個人,而是用欄位指派:

流程狀態 執行者
未處理 建立人(申請人本人)
部門主管審核中 部門主管(群組選擇欄位,任一人可推進)
已核准 員工(使用者選擇欄位,回本人確認)
人事確認中 人事(群組選擇欄位)

把「群組選擇」欄位指定為執行者時,該群組所有成員都是這一關的執行者,可設為「任一人執行即推進」。所以「部門主管審核中」是該主管群組裡任一位核准就往前走,主管請假也不卡。

而「部門主管」這個群組欄位的值,是建立休假申請時從員工名簿 Lookup 帶進來的:

員工名簿(所屬部門主管:群組欄位)
  → Lookup 帶入 → 休假申請(部門主管:群組欄位)
  → 指定為流程執行者 → 「部門主管審核中」該群組成員任一人可審核

當某部門換主管,只要在共通管理把新主管加進該群組、舊主管移出,三支 App 的權限與所有在途簽核都會指向新主管,不用打開任何一支 App。

圖5:「休假申請」流程管理中,「部門主管審核中」以群組選擇欄位指定執行者、設為其中一人執行

ℹ️ 在共通管理新增/維護群組需要 cybozu.com 管理員權限。

把這些群組欄位收進一個區塊,並用預設值與欄位權限固定

「部門主管」「人事」這些群組選擇欄位,是記錄權限與流程執行者的指派依據。為了集中管理、也避免被誤改,這套模板把它們放進表單上的一個「群組」區塊——上下班打卡叫「權限管理」、休假申請叫「審核流程」——並搭配兩個設定:

  • 預設值帶入:先在 cybozu.com 共通管理建好「人事」群組,設為「人事」欄位的預設值,新增記錄時自動帶入,不必每次手選。(「部門主管」則如前述,由 Lookup 自員工名簿帶入。)
  • 欄位權限鎖定:把這些欄位設為一般使用者不可編輯,避免有人改掉審核者或人事,讓流程或權限跑到錯的人身上。

於是「誰審核、誰是人事」在建 App 時就由群組固定好,員工填單時看得到、但改不動;要調整時只改共通管理的群組成員即可,表單不用動。

動態群組

若某個角色的成員常變動,可以用動態群組——依條件(職務、所屬組織等)自動納入符合的使用者。例如設定「職務 包含 課長」者自動歸入「各課主管」群組,成員變動時不需手動維護。

兩個常見的雷

  1. 上方列優先:存取權限設多列時,使用者同時命中多列(因為屬於多個組織/群組)會以最上面那列為準。若「全體員工(唯讀)」排在「人事(可編輯)」上面,人事會被判成唯讀。群組列的上下順序要排好。
  2. 少用個別使用者列:權限列混入大量人名會讓上述順序更難維護,盡量以少數群組列組織權限。

結語

這篇用一套出勤管理模板組,走過三條設計思路:

  1. 原生功能用到順手、資料與權限好維護
  2. 原生差一步的地方用官方免費外掛補
  3. 權限與簽核綁在群組(角色),人員異動只改共通管理一處

模板裡也做了不少現成的東西,例如依勞基法各倍率拆算的加班時數計算欄位,下載後打開就能參考公式。

⚠️ 本範例模板之加班時數倍率計算邏輯,係依 2026年3月現行台灣《勞動基準法》及勞動部相關加班費計算說明設計。勞基法第 24 條就平日延長工時、休息日出勤等加班費加給標準有明文規定,勞動部亦提供對應的計算說明與試算資訊。
※模板僅供出勤與薪資試算參考,實際核薪、加班認定、給付方式及合法性,仍應依公司制度、勞動契約、適用法令及最新主管機關解釋為準。請於使用前自行確認資料正確性與法令適用性。

要自己動手,建議的順序是:

  1. 先盤點角色(人事、各部門主管、一般員工),每個角色建一個群組。
  2. 員工名簿用「組織選擇」記位置、「群組選擇」記角色。
  3. 流程執行者一律指向群組欄位,視情況設「任一人執行即推進」。
  4. 權限列以群組為主、排好上下順序,少用個別人名。
  5. 功能不足時,依「原生 → 官方免費外掛 → 第三方 → 客製」的順序補。

同樣的設計搬到請購、報修、合約簽核等「審核流程+權限管理」的場景一樣適用,歡迎下載試用。

下載請點此👉 範例模板下載申請


圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言