Ứng dụng Apps Script trong bài toán gửi duyệt nhiều cấp trong doanh nghiệp

Giới thiệu

Trong môi trường doanh nghiệp hiện đại, quy trình duyệt (approval workflow) là yếu tố quan trọng giúp đảm bảo tính minh bạch, kiểm soát và hiệu quả trong các hoạt động nội bộ. Tuy nhiên, việc triển khai quy trình duyệt nhiều cấp thường đòi hỏi các phần mềm phức tạp hoặc hệ thống chi phí cao. Với Google Apps Script, các doanh nghiệp vừa và nhỏ có thể tạo ra một hệ thống duyệt nhiều cấp tùy biến, dễ triển khai và miễn phí, tích hợp trực tiếp với Google Workspace như Google Sheets, Gmail và Google Drive.

Bài viết này sẽ hướng dẫn bạn cách ứng dụng Apps Script để xây dựng quy trình gửi duyệt nhiều cấp (multi-level approval workflow), từ đó nâng cao hiệu suất và chuyên nghiệp hóa quy trình làm việc.


Google Apps Script là gì?

Google Apps Script là một nền tảng phát triển dựa trên JavaScript, cho phép bạn tự động hóa các tác vụ trong Google Workspace như Gmail, Sheets, Docs, Drive, v.v. Ưu điểm của Apps Script:

  • Miễn phí và chạy trực tiếp trong trình duyệt
  • Tích hợp sâu với hệ sinh thái Google
  • Không cần cài đặt phần mềm hoặc server riêng
  • Dễ học, dễ triển khai

Bài toán thực tế: Duyệt đơn xin nghỉ phép nhiều cấp

Bối cảnh:
Một nhân viên gửi yêu cầu xin nghỉ phép. Đơn nghỉ phải được duyệt qua 3 cấp:

  1. Trưởng nhóm/phòng ban
  2. Trưởng bộ phận nhân sự
  3. Giám đốc

Sau khi được duyệt đủ 3 cấp, email thông báo sẽ được gửi lại cho nhân viên.


Giải pháp với Google Apps Script

1. Thiết kế biểu mẫu nhập liệu

Dùng Google Forms hoặc trực tiếp trong Google Sheets để nhập đơn xin nghỉ với các trường như:

  • Họ tên nhân viên
  • Ngày bắt đầu – kết thúc nghỉ
  • Lý do
  • Trạng thái duyệt từng cấp

Google Sheets sẽ là nơi lưu trữ dữ liệu và theo dõi tiến độ duyệt. Mỗi dòng đại diện cho một đơn xin nghỉ.

2. Cấu trúc dữ liệu trong Google Sheets

| Mã đơn | Họ tên | Ngày bắt đầu | Ngày kết thúc | Lý do | Trạng thái cấp 1 | Trạng thái cấp 2 | Trạng thái cấp 3 | Email nhân viên | … |

Khi một đơn được tạo mới, trạng thái các cấp duyệt sẽ là “Chờ duyệt”.


3. Viết Apps Script để xử lý gửi duyệt

Bạn tạo script như sau:

a. Gửi email duyệt đến cấp 1 (Trưởng nhóm)

function sendApprovalRequestToManager(row) {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Đơn nghỉ phép");
var data = sheet.getRange(row, 1, 1, sheet.getLastColumn()).getValues()[0];
var managerEmail = "[email protected]";

var subject = `Yêu cầu duyệt nghỉ phép từ ${data[1]}`;
var body = `Nhân viên ${data[1]} xin nghỉ từ ${data[2]} đến ${data[3]}.\n\nLý do: ${data[4]}.\n\nBạn vui lòng duyệt theo link: [Link đến Google Form hoặc Sheet]`;

MailApp.sendEmail(managerEmail, subject, body);
}

b. Khi cấp 1 duyệt xong → cập nhật trạng thái và gửi tiếp đến cấp 2

Bạn có thể dùng trigger onEdit(e) để theo dõi khi trạng thái cột “Trạng thái cấp 1” được cập nhật.

function onEdit(e) {
var sheet = e.source.getSheetByName("Đơn nghỉ phép");
var range = e.range;

if (range.getColumn() == 6) { // Cột Trạng thái cấp 1
var row = range.getRow();
var status = sheet.getRange(row, 6).getValue();
if (status === "Đã duyệt") {
sendApprovalRequestToHR(row);
}
}
}

c. Gửi email duyệt đến cấp 2 (Phòng nhân sự)

function sendApprovalRequestToHR(row) {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Đơn nghỉ phép");
var data = sheet.getRange(row, 1, 1, sheet.getLastColumn()).getValues()[0];
var hrEmail = "[email protected]";

var subject = `Cấp 2: Duyệt nghỉ phép từ ${data[1]}`;
var body = `Đơn nghỉ phép của ${data[1]} đã được trưởng nhóm duyệt.\n\nTiếp theo: Phòng nhân sự duyệt.\nLink duyệt: [Link Sheet hoặc Form]`;

MailApp.sendEmail(hrEmail, subject, body);
}

Tương tự, bạn tạo hàm sendApprovalRequestToDirector() khi trạng thái cấp 2 là “Đã duyệt”.

Ứng dụng Apps Script trong bài toán gửi duyệt nhiều cấp trong doanh nghiệp

4. Gửi thông báo kết quả cho nhân viên

Khi trạng thái duyệt cấp 3 là “Đã duyệt”, Apps Script sẽ gửi email về cho nhân viên:

function notifyEmployee(row) {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Đơn nghỉ phép");
var data = sheet.getRange(row, 1, 1, sheet.getLastColumn()).getValues()[0];
var employeeEmail = data[8];

var subject = "Đơn nghỉ phép của bạn đã được duyệt";
var body = `Chúc mừng ${data[1]}, đơn nghỉ phép từ ${data[2]} đến ${data[3]} đã được duyệt đầy đủ.`;

MailApp.sendEmail(employeeEmail, subject, body);
}

Ưu điểm của giải pháp

  • Tiết kiệm chi phí: Không cần phần mềm quản lý đắt tiền.
  • Tự động hóa hoàn toàn: Giảm thủ công, tránh sai sót.
  • Tùy biến dễ dàng: Có thể mở rộng thêm cấp duyệt, điều kiện logic.
  • Giao diện quen thuộc: Dữ liệu hiển thị trên Google Sheets, ai cũng có thể dùng.

Mở rộng nâng cao

Một số tính năng nâng cao có thể triển khai thêm:

  • Gửi thông báo qua Google Chat
  • Giao diện duyệt đơn trực quan bằng Google AppSheet
  • Tích hợp với Google Calendar để tự động đánh dấu ngày nghỉ
  • Lưu trữ file PDF đơn xin nghỉ lên Google Drive
  • Thống kê tổng số ngày nghỉ, lịch sử duyệt

Kết luận

Việc áp dụng Google Apps Script trong xử lý quy trình duyệt nhiều cấp không chỉ giúp tối ưu hóa hiệu suất làm việc mà còn thể hiện tính chuyên nghiệp, minh bạch trong doanh nghiệp. Với một chút kỹ thuật lập trình, bạn hoàn toàn có thể xây dựng các công cụ mạnh mẽ, thân thiện và hoàn toàn miễn phí cho tổ chức của mình.

Dịch vụ lập trình ứng dụng

🎯 Lập trình API, Python, Node JS, Telegram Bot, Automate Workflow, Power Apps and Apps Script. Ứng dụng Web App, API với Apps Script vào bài toán thực tế trong doanh nghiệp.

📞 +84 78 600 5534 (Zalo, WhatsApp, Telegram)

💻 Github

🌏 appscript.online

Viết một bình luận