Kiến thức

Bảo Vệ & Phân Quyền Google Sheets Cho Nhóm Làm Việc [2027]

Tuân HoangTuân Hoang
27 tháng 2, 2026
Cập nhật: 9 tháng 10, 2026
23 phút đọc
Ảnh minh họa bài viết: Bảo Vệ & Phân Quyền Google Sheets Cho Nhóm Làm Việc [2027]

Tóm tắt: Bài viết hướng dẫn toàn diện về bảo vệ dữ liệu và phân quyền trong Google Sheets khi làm việc nhóm. Từ các cấp độ chia sẻ cơ bản (Viewer/Editor/Owner) đến Protected Ranges nâng cao, Filter Views, Data Validation, và Apps Script bảo mật. Bao gồm 5 mô hình phân quyền thực tế cho doanh nghiệp và checklist bảo mật 10 bước.

Trả lời nhanh: Chia sẻ theo email với 3 mức Người xem, Người nhận xét, Người chỉnh sửa và tắt quyền chia sẻ tiếp; dùng Bảo vệ trang tính và dải ô để chỉ người được chỉ định mới sửa được công thức, bảng lương; dùng Chế độ xem bộ lọc để mỗi người lọc riêng không ảnh hưởng người khác; xác thực dữ liệu để chặn nhập sai; và lịch sử phiên bản để khôi phục khi bị sửa nhầm.

Mục lục

  1. 1. Tại sao phân quyền quan trọng?
  2. 2. 4 cấp độ chia sẻ Google Sheets
  3. 3. Protected Sheets: Khóa toàn bộ sheet
  4. 4. Protected Ranges: Khóa vùng dữ liệu cụ thể
  5. 5. Filter Views: Lọc riêng không ảnh hưởng người khác
  6. 6. Data Validation: Kiểm soát đầu vào
  7. 7. Version History: Lịch sử thay đổi
  8. 8. Apps Script bảo mật nâng cao
  9. 9. 5 mô hình phân quyền cho doanh nghiệp
  10. 10. So sánh: GS vs Excel vs Notion
  11. 11. Checklist bảo mật 10 bước
  12. 12. FAQ - Câu hỏi thường gặp
  13. 13. Nâng cấp phân quyền chuyên nghiệp

1. Tại Sao Phân Quyền Quan Trọng?

Hãy tưởng tượng tình huống sau: Bạn dành 3 ngày xây dựng bảng lương cho 50 nhân viên trên Google Sheets. Chia sẻ cho phòng kế toán review. Sáng hôm sau mở file ra thấy... toàn bộ công thức bị xóa, dữ liệu lương bị thay đổi, và không biết ai đã sửa gì. Nguyên nhân? Một nhân viên kế toán mới vô tình chỉnh sửa vào ô sai và kéo công thức nhầm.

Đây không phải chuyện hiếm. Ba sai lầm hay gặp nhất khi chia sẻ file:

  • Cấp quyền Editor cho cả nhóm, kể cả người chỉ cần xem
  • Không khóa vùng công thức và hàng tiêu đề trước khi chia sẻ
  • Để dữ liệu nhạy cảm (lương, KPI) chung một file với dữ liệu mọi người cần sửa

Tình huống thường gặp: cấp quyền quá rộng

Nhân viên mới được cấp quyền Editor vào file đơn hàng chính và vô tình xóa vài cột quan trọng như mã đơn, địa chỉ, số điện thoại khách. Dữ liệu vẫn khôi phục được từ Version History, nhưng cả nhóm mất thời gian dò lại và các đơn chưa giao bị chậm. Phân quyền đúng từ đầu giúp tránh tình huống này.

Bài viết này sẽ hướng dẫn bạn bảo vệ dữ liệu toàn diện trên Google Sheets, từ cơ bản đến nâng cao. Sau khi đọc xong, bạn sẽ biết cách thiết lập phân quyền chuyên nghiệp cho team, đảm bảo dữ liệu an toàn mà vẫn linh hoạt trong làm việc nhóm.

2. 4 Cấp Độ Chia Sẻ Google Sheets

Google Sheets có 4 cấp độ quyền truy cập. Hiểu rõ từng cấp giúp bạn gán đúng quyền cho đúng người.

Quyen Xem Bình luận Chỉnh sửa Chia sẻ Xóa file Phù hợp
Viewer ✓ ✗ ✗ ✗ ✗ Stakeholders, sếp xem báo cáo
Commenter ✓ ✓ ✗ ✗ ✗ Reviewer, người duyệt
Editor ✓ ✓ ✓ ✗* ✗ Nhân viên nhập liệu, kế toán
Owner ✓ ✓ ✓ ✓ ✓ Admin, quản lý

* Editor có thể chia sẻ tiếp nếu Owner cho phép trong phần "Share settings".

Cách chia sẻ Google Sheets

  1. Mở file Google Sheets
  2. Click nút Share (góc trên bên phải)
  3. Nhập email người muốn chia sẻ
  4. Chọn quyền: Viewer / Commenter / Editor
  5. Bỏ tick "Notify people" nếu không muốn gửi email thông báo
  6. Click Send

Mẹo quan trọng: Trong phần Share, click Settings (biểu tượng răng cưa) → bỏ tick "Editors can change permissions and share". Điều này ngăn Editor chia sẻ file cho người khác mà bạn không biết.

Chia sẻ theo domain (Google Workspace)

Nếu công ty dùng Google Workspace, bạn có thể chia sẻ chỉ cho người trong tổ chức:

  • Restricted - Chỉ những người được thêm email mới truy cập được
  • Anyone in [Organization] - Tất cả nhân viên trong công ty
  • Anyone with the link - Bất kỳ ai có link (NGUY HIỂM - tránh dùng cho dữ liệu nhạy cảm)

3. Protected Sheets: Khóa Toàn Bộ Sheet

Protected Sheet cho phép bạn khóa toàn bộ một sheet, chỉ cho phép những người cụ thể được phép chỉnh sửa. Đây là cách bảo vệ mạnh mẽ nhất.

Cách khóa sheet

  1. Click chuột phải vào tab sheet cần khóa (VD: "BangLuong")
  2. Chon Protect sheet
  3. Trong panel bên phải, nhập Description (VD: "Chỉ HR được chỉnh sửa")
  4. Tab Sheet đã được chọn sẵn → click Set permissions
  5. Chon "Restrict who can edit this range"
  6. Chon Custom → thêm email người được phép sửa
  7. Click Done

Ví dụ thực tế: Sheet Bảng Lương

Sheet "BangLuong" - KHÓA

  • ✓ HR Manager: Editor (được sửa)
  • ✓ Kế toán trưởng: Editor (được sửa)
  • ✗ Nhân viên kế toán: Viewer (chỉ xem)
  • ✗ Các phòng khác: Không truy cập

Sheet "ChamCong" - MỞ

  • ✓ Tất cả nhân viên: Editor (tự chấm công)
  • ✓ HR: Editor + protected header row
  • ✓ Manager: Viewer (xem báo cáo)

Lưu ý khi dùng Protected Sheets

  • Protected Sheet chỉ bảo vệ dữ liệu trong sheet đó, không bảo vệ các sheet khác
  • Người bị khóa vẫn có thể xem dữ liệu (nếu có quyền Viewer trên file), chỉ không sửa được
  • Owner của file luôn có quyền sửa, kể cả sheet đã khóa
  • Protected Sheet không ẩn được sheet - muốn ẩn thì dùng: Right-click tab → Hide sheet

4. Protected Ranges: Khóa Vùng Dữ Liệu Cụ Thể

Khác với Protected Sheet (khóa toàn bộ), Protected Range cho phép bạn khóa chỉ một vùng (range) cụ thể trong sheet. Đây là cách linh hoạt nhất - nhân viên vẫn có thể nhập dữ liệu vào các ô khác, nhưng không thể sửa vào vùng đã khóa.

Cách tạo Protected Range

  1. Chọn vùng cần khóa (VD: cột E - Lương, hoặc hàng 1 - Header)
  2. Vào menu Data → Protected sheets and ranges
  3. Click Add a sheet or range
  4. Tab Range đã được chọn, nhập range: VD BangLuong!E:E
  5. Nhập Description (VD: "Cột Lương - chỉ HR sửa")
  6. Click Set permissions
  7. Chon Custom → thêm người được phép
  8. Click Done

Các tình huống dùng Protected Range

Tình huống 1: Khóa hàng Header

Ngăn nhân viên vô tình xóa hoặc sửa tiêu đề cột.

Range: Sheet1!1:1
Permission: Chi Owner
Mo ta: Header row - khong duoc chinh sua

Tình huống 2: Khóa cột Lương

Chỉ HR và kế toán trưởng mới xem và sửa được cột lương.

Range: BangLuong!E:E
Permission: hr@company.com, ketoan@company.com
Mo ta: Cot Luong Gross - chi HR/Ketoan sua

Tình huống 3: Khóa hàng Tổng cộng

Hàng cuối cùng chứa công thức SUMIFS - không ai được sửa.

Range: BaoCao!50:50
Permission: Chi Owner
Mo ta: Hang tong cong - cong thuc tu dong, khong chinh sua

Tình huống 4: Khóa cột Công thức

Cột D chứa công thức tính (=B*C), khóa để nhân viên không ghi đè.

Range: DonHang!D2:D1000
Permission: Chi Owner
Mo ta: Cot ThanhTien - cong thuc tu dong
// Nhan vien chi nhap B (SoLuong) va C (DonGia)
// D tu dong = B * C

Mẹo nâng cao: Bạn có thể tạo nhiều Protected Range trên cùng 1 sheet với quyền khác nhau. VD: Cột A-D ai cũng sửa được, cột E chỉ HR, cột F-G chỉ kế toán, hàng 1 chỉ Owner. Kết hợp nhiều range để tạo phân quyền tinh vi.

5. Filter Views: Mỗi Người Có Filter Riêng

Một vấn đề lớn khi làm việc nhóm: người này lọc dữ liệu thì người khác cũng bị ảnh hưởng. VD: Bạn đang lọc đơn hàng thành phố HCM, đồng nghiệp ở Hà Nội mở file ra cũng thấy chỉ có HCM. Filter Views giải quyết vấn đề này.

Filter thông thường vs Filter View

Đặc điểm Filter thường Filter View
Ảnh hưởng người khác CÓ - tất cả đều thấy KHÔNG - chỉ bạn thấy
Lưu lại được Khong Có - đặt tên và tái sử dụng
Nhiều filter cùng lúc Khong Có - tạo nhiều filter views
Quyền cần thiết Editor Viewer cũng tạo được (temporary)
Chia sẻ qua URL Khong Có - gửi link filter view

Cách tạo Filter View

  1. Vào menu Data → Filter views → Create new filter view
  2. Thanh màu đen xuất hiện ở đầu spreadsheet
  3. Đặt tên cho filter view (VD: "Đơn hàng HCM tháng 2")
  4. Thiết lập điều kiện lọc trên các cột
  5. Filter view tự động được lưu. Lần sau vào Data → Filter views để chọn lại

Ví dụ Filter Views hay dùng

Quản lý bán hàng

  • ● "Đơn chờ xử lý" - lọc TrangThai = Chờ xử lý
  • ● "Đơn HCM" - lọc ThanhPho = Hồ Chí Minh
  • ● "Đơn trên 1 triệu" - lọc TongTien >= 1000000
  • ● "Đơn hôm nay" - lọc Ngay = TODAY

Quản lý nhân sự

  • ● "NV phòng Kinh doanh" - lọc PhongBan
  • ● "NV mới (thử việc)" - lọc TrangThai = Thử việc
  • ● "Lương trên 15tr" - lọc Luong >= 15000000
  • ● "NV sắp hết HĐ" - lọc NgayHetHD < 30 ngày

6. Data Validation: Kiểm Soát Đầu Vào

Data Validation giúp bạn kiểm soát những gì nhân viên có thể nhập vào ô. Đây là tuyến phòng thủ đầu tiên chống dữ liệu sai.

Các loại Data Validation

Loai Mô tả Ví dụ Cách tạo
Dropdown list Chọn từ danh sách có sẵn Trạng thái: Mới, Đang xử lý, Xong List of items
Dropdown from range Chọn từ vùng dữ liệu Tên nhân viên từ sheet NhanVien List from range
Number range Giới hạn giá trị số Số lượng: 1 đến 1000 Number between
Date range Giới hạn ngày tháng Ngày nhập: từ 01/01/2026 Date is valid / after
Text length Giới hạn độ dài Mã SP: đúng 5 ký tự Text length
Custom formula Công thức tùy chỉnh Email phải chứa @ Custom formula is
Checkbox TRUE/FALSE Đã duyệt: tick/untick Checkbox

Ví dụ Custom Formula Validation

// 1. Email hop le (chua @)
=REGEXMATCH(A1, "^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$")

// 2. So dien thoai VN (bat dau 0, du 10 so)
=AND(LEFT(A1,1)="0", LEN(A1)=10, ISNUMBER(VALUE(A1)))

// 3. Ma san pham (SP + 3 so)
=REGEXMATCH(A1, "^SP[0-9]{3}$")

// 4. Khong cho nhap trung (unique)
=COUNTIF(A:A, A1)<=1

// 5. Ngay khong duoc trong tuong lai
=A1<=TODAY()

// 6. Gia tri phai lon hon 0
=AND(ISNUMBER(A1), A1>0)

Meo: Kết hợp Data Validation với Conditional Formatting để tô màu ô không hợp lệ. VD: ô nào nhập sai format sẽ hiện màu đỏ, giúp nhân viên biết ngay cần sửa.

7. Version History: Lịch Sử Thay Đổi

Version History là "bảo hiểm" của bạn. Khi ai đó sửa sai hay xóa nhầm dữ liệu, bạn có thể khôi phục về phiên bản trước đó chỉ bằng vài click.

Cách xem Version History

  1. Vào menu File → Version history → See version history
  2. Hoặc dùng phím tắt: Ctrl + Alt + Shift + H (Windows) / Cmd + Option + Shift + H (Mac)
  3. Panel bên phải hiện danh sách các phiên bản
  4. Click vào từng phiên bản để xem thay đổi
  5. Các ô bị thay đổi sẽ được tô màu theo người sửa
  6. Click Restore this version để khôi phục

Tính năng hữu ích của Version History

  • ✓Named versions: Click 3 chấm → Name this version. Đặt tên cho phiên bản quan trọng (VD: "Báo cáo Q1 - Final")
  • ✓Show changes: Bật toggle "Show changes" để thấy chi tiết từng ô bị thay đổi
  • ✓Filter by person: Lọc theo người sửa để biết ai đã thay đổi gì
  • ✓Copy to clipboard: Copy dữ liệu từ phiên bản cũ mà không cần restore toàn bộ

Giới hạn của Version History

  • Google giữ Version History trong không giới hạn thời gian (trước đây chỉ giữ 30 ngày, nay đã đổi)
  • Tuy nhiên, các phiên bản cũ có thể bị gom nhóm (grouped) để tiết kiệm dung lượng
  • Version History không hoạt động với Google Sheets offline
  • Không thể khôi phục chi 1 o - phải restore cả phiên bản

8. Apps Script Bảo Mật Nâng Cao

Với Apps Script, bạn có thể tạo các lớp bảo mật nâng cao mà Google Sheets không cung cấp sẵn: log thay đổi chi tiết, tự động backup, kiểm tra quyền trước khi sửa, va thông báo khi có thay đổi bất thường.

8a. Script log mọi thay đổi

// === LOG MOI THAY DOI VAO SHEET "AuditLog" ===
function onEdit(e) {
  // Lay thong tin thay doi
  var sheet = e.source.getActiveSheet();
  var range = e.range;
  var user = Session.getActiveUser().getEmail();
  var oldValue = e.oldValue || '(trong)';
  var newValue = e.value || '(trong)';

  // Bo qua sheet AuditLog (tranh loop)
  if (sheet.getName() === 'AuditLog') return;

  // Lay hoac tao sheet AuditLog
  var ss = e.source;
  var logSheet = ss.getSheetByName('AuditLog');
  if (!logSheet) {
    logSheet = ss.insertSheet('AuditLog');
    logSheet.appendRow([
      'Thoi gian', 'Nguoi sua', 'Sheet',
      'O', 'Gia tri cu', 'Gia tri moi'
    ]);
    // Khoa sheet AuditLog - chi Owner xem
    var protection = logSheet.protect();
    protection.setDescription('Audit Log - Do not edit');
    protection.removeEditors(
      protection.getEditors()
    );
  }

  // Ghi log
  logSheet.appendRow([
    new Date(),
    user,
    sheet.getName(),
    range.getA1Notation(),
    oldValue,
    newValue
  ]);
}

8b. Script tự động backup hàng ngày

// === TU DONG BACKUP HANG NGAY ===
function dailyBackup() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var today = new Date();
  var dateStr = Utilities.formatDate(today, 'Asia/Ho_Chi_Minh',
    'yyyy-MM-dd');

  // Tao ban sao trong folder Backup
  var backupFolderId = 'YOUR_BACKUP_FOLDER_ID';
  var backupFolder = DriveApp.getFolderById(backupFolderId);

  var fileName = ss.getName() + ' - Backup ' + dateStr;
  var file = DriveApp.getFileById(ss.getId());
  file.makeCopy(fileName, backupFolder);

  // Xoa backup cu hon 30 ngay
  var files = backupFolder.getFiles();
  var thirtyDaysAgo = new Date();
  thirtyDaysAgo.setDate(thirtyDaysAgo.getDate() - 30);

  while (files.hasNext()) {
    var f = files.next();
    if (f.getDateCreated() < thirtyDaysAgo) {
      f.setTrashed(true);
    }
  }

  Logger.log('Backup thanh cong: ' + fileName);
}

// Dat trigger: Triggers → dailyBackup
// → Time-driven → Day timer → 11pm-12am

8c. Script thông báo khi có thay đổi bất thường

// === CANH BAO THAY DOI BAT THUONG ===
function onEdit(e) {
  var sheet = e.source.getActiveSheet();
  var range = e.range;
  var user = Session.getActiveUser().getEmail();

  // Danh sach sheet nhay cam
  var sensitiveSheets = ['BangLuong', 'Config', 'KPI'];

  if (sensitiveSheets.indexOf(sheet.getName()) > -1) {
    // Kiem tra neu sua nhieu o cung luc (co the la paste/delete)
    var numRows = range.getNumRows();
    var numCols = range.getNumColumns();

    if (numRows * numCols > 10) {
      // Thay doi lon - gui canh bao
      var subject = '[CANH BAO] Thay doi lon tren '
        + sheet.getName();
      var body = 'Nguoi sua: ' + user + '
'
        + 'Sheet: ' + sheet.getName() + '
'
        + 'Vung bi thay doi: ' + range.getA1Notation() + '
'
        + 'So o bi thay doi: ' + (numRows * numCols) + '
'
        + 'Thoi gian: ' + new Date().toString();

      MailApp.sendEmail({
        to: 'admin@company.com',
        subject: subject,
        body: body
      });
    }
  }
}

8d. Script kiểm tra quyền trước khi cho phép thao tác

// === KIEM TRA QUYEN THEO CUSTOM LOGIC ===
function checkPermission(email, action) {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var permSheet = ss.getSheetByName('Permissions');

  // Sheet Permissions chua: Email, Role, AllowedSheets
  var data = permSheet.getDataRange().getValues();

  for (var i = 1; i < data.length; i++) {
    if (data[i][0] === email) {
      var role = data[i][1];
      var allowed = data[i][2].split(',');

      // Kiem tra role co duoc phep action nay khong
      var rolePermissions = {
        'Admin': ['view', 'edit', 'delete', 'export'],
        'Manager': ['view', 'edit', 'export'],
        'Staff': ['view', 'edit'],
        'Viewer': ['view']
      };

      if (rolePermissions[role] &&
          rolePermissions[role].indexOf(action) > -1) {
        return true;
      }
    }
  }
  return false;
}

// Su dung trong menu custom:
function onOpen() {
  var ui = SpreadsheetApp.getUi();
  ui.createMenu('Quan ly')
    .addItem('Xuat bao cao', 'exportReport')
    .addItem('Xoa du lieu cu', 'deleteOldData')
    .addToUi();
}

function exportReport() {
  var email = Session.getActiveUser().getEmail();
  if (!checkPermission(email, 'export')) {
    SpreadsheetApp.getUi().alert(
      'Ban khong co quyen xuat bao cao!'
    );
    return;
  }
  // Thuc hien export...
}

9. 5 Mô Hình Phân Quyền Cho Doanh Nghiệp

Dựa trên kinh nghiệm tư vấn cho nhiều doanh nghiệp, chúng tôi tổng hợp 5 mô hình phân quyền phổ biến nhất khi dùng Google Sheets làm việc nhóm.

Mô hình 1: Manager xem báo cáo, nhân viên nhập dữ liệu

Áp dụng: Team bán hàng, team kinh doanh

Nhân viên bán hàng

  • ✓ Sheet "NhapDon": Editor (nhập đơn hàng mới)
  • ✗ Sheet "BaoCao": Viewer (chỉ xem)
  • ✗ Sheet "Config": Ẩn (không thấy)
  • ✗ Cột "LoiNhuan": Protected (không thấy)

Manager

  • ✓ Sheet "BaoCao": Viewer (xem dashboard)
  • ✓ Sheet "NhapDon": Viewer (xem đơn hàng)
  • ✓ Cột "LoiNhuan": Viewer (xem lợi nhuận)
  • ✗ Sheet "Config": Viewer

Mô hình 2: HR xem lương, nhân viên chỉ xem info cá nhân

Áp dụng: Quản lý nhân sự, bảng chấm công

HR Manager

  • ✓ Sheet "NhanVien": Editor (sửa tất cả)
  • ✓ Sheet "BangLuong": Editor (sửa lương)
  • ✓ Sheet "ChamCong": Editor (duyệt chấm công)
  • ✓ Sheet "BaoCao": Viewer

Nhân viên

  • ✓ Sheet "ChamCong": Editor (chỉ hàng của mình *)
  • ✗ Sheet "BangLuong": Không truy cập
  • ✗ Sheet "NhanVien": Viewer (chỉ xem info mình *)

* Cần dùng Apps Script để giới hạn theo hàng

Mô hình 3: Multi-branch (nhiều chi nhánh)

Áp dụng: Chuỗi cửa hàng, nhiều văn phòng

Cách thực hiện:

  • ● Mỗi chi nhánh 1 sheet riêng (VD: "HCM", "HN", "DN")
  • ● Nhân viên chi nhánh HCM: Editor trên sheet "HCM", không truy cập sheet khác
  • ● Quản lý vùng: Viewer trên nhiều sheet chi nhánh trong vùng
  • ● CEO/Director: Viewer trên sheet "TongHop" (IMPORTRANGE từ các sheet)
  • ● Sheet "TongHop" dùng IMPORTRANGE để gom dữ liệu từ tất cả chi nhánh
// Sheet TongHop: Gom du lieu tu cac chi nhanh
// O A1:
=IMPORTRANGE("URL_sheet_HCM", "DonHang!A:M")

// Hoac dung QUERY de loc:
=QUERY(IMPORTRANGE("URL_sheet_HCM", "DonHang!A:M"),
       "SELECT * WHERE Col12 = 'Hoan thanh'")

Mô hình 4: Approval workflow (Nhập → Duyệt → Xác nhận)

Áp dụng: Đề xuất mua hàng, đề nghị chi tiền, xin nghỉ phép

Quy trình 3 bước:

  1. Bước 1 - Nhân viên nhập: Editor trên cột A-E (thông tin đề xuất). Cột F (Trạng thái) và cột G (Người duyệt) là Protected.
  2. Bước 2 - Manager duyệt: Editor trên cột F (đổi TrangThai thành "Đã duyệt" hoặc "Từ chối") và cột G (ghi tên người duyệt). Cột A-E là Protected.
  3. Bước 3 - Kế toán xác nhận: Editor trên cột H (xác nhận đã chi tiền). Tất cả cột khác là Protected.
// Apps Script: Tu dong gui email khi co de xuat moi
function onEdit(e) {
  var sheet = e.source.getActiveSheet();
  if (sheet.getName() !== 'DeXuat') return;

  var col = e.range.getColumn();
  var row = e.range.getRow();

  // Khi nhan vien nhap xong cot E (noi dung)
  if (col === 5 && row > 1) {
    var tenNV = sheet.getRange(row, 1).getValue();
    MailApp.sendEmail({
      to: 'manager@company.com',
      subject: '[De xuat moi] Tu ' + tenNV,
      body: 'Co de xuat moi can duyet. Vui long kiem tra.'
    });
  }

  // Khi manager duyet (cot F)
  if (col === 6 && row > 1) {
    var status = e.value;
    var emailNV = sheet.getRange(row, 3).getValue();
    MailApp.sendEmail({
      to: emailNV,
      subject: 'De xuat cua ban da duoc ' + status,
      body: 'Trang thai: ' + status
    });
  }
}

Mô hình 5: Read-only Dashboard cho stakeholders

Áp dụng: Báo cáo cho sếp, nhà đầu tư, đối tác

Cách thực hiện:

  • ● Tao Spreadsheet riêng chỉ chứa Dashboard
  • ● Dung IMPORTRANGE để kéo dữ liệu từ file làm việc chính
  • ● Chia sẻ file Dashboard với quyền Viewer
  • ● Dữ liệu tự động cập nhật khi file gốc thay đổi
  • ● Stakeholders chỉ thấy báo cáo, không thấy raw data
  • ● Thêm biểu đồ, KPI cards để trực quan hóa
// Sheet Dashboard (file rieng):
// Keo doanh thu tu file lam viec
=IMPORTRANGE("URL_file_chinh", "Dashboard!B2")

// Keo so don hang
=IMPORTRANGE("URL_file_chinh", "Dashboard!B3")

// Keo bieu do - Khong the IMPORTRANGE bieu do
// => Tao bieu do moi dua tren du lieu da import

10. So Sánh: Google Sheets vs Excel vs Notion

Mỗi công cụ có thế mạnh riêng về bảo mật và phân quyền. Bảng dưới đây giúp bạn so sánh nhanh:

Tính năng Google Sheets Excel (365) Notion
Cấp độ quyền 4 (Viewer, Commenter, Editor, Owner) 3 (View, Edit, Full Control) 4 (Guest, Member, Admin, Owner)
Protected Range Có - linh hoạt Có - tương tự Khong
Protected Sheet Co Có (password) Lock page
Filter View Có - xuất sắc Custom Views (hạn chế) Filter riêng tự nhiên
Version History Không giới hạn 25 phiên bản (free) 30 ngày (free)
Audit Log Qua Apps Script Qua VBA/Power Automate Có sẵn (Enterprise)
Data Validation Manh Rất mạnh Cơ bản (property types)
Realtime collaboration Xuất sắc Tốt (365 Online) Xuất sắc
Scripting bảo mật Apps Script (mạnh) VBA + Power Automate API (hạn chế)
Giá (team 10 người) Miễn phí ~3 trieu/thang ~2 trieu/thang

Kết luận: Google Sheets là lựa chọn tốt nhất về tỷ lệ tính năng/giá cho doanh nghiệp nhỏ. Phân quyền linh hoạt, Version History không giới hạn, và Apps Script mạnh mẽ - tất cả đều miễn phí. Excel mạnh hơn về Data Validation, còn Notion tốt hơn về giao diện và trải nghiệm.

11. Checklist Bảo Mật 10 Bước

Trước khi chia sẻ bất kỳ Google Sheets nào cho team, hãy chạy qua checklist này:

1

Xác định ai cần truy cập và với quyền gì

Liệt kê danh sách người dùng, phân loại theo role: Admin, Manager, Staff, Viewer. Áp dụng nguyên tắc Least Privilege - chỉ cấp quyền tối thiểu cần thiết.

2

Tắt "Editors can change permissions and share"

Trong Share settings → Settings (răng cưa) → bỏ tick option này. Ngăn Editor chia sẻ file cho người ngoài mà bạn không biết.

3

Thiết lập Protected Sheets cho các sheet nhạy cảm

Bảng lương, config, công thức master - tất cả nên được Protected. Chỉ cho phép người có thẩm quyền chỉnh sửa.

4

Thiết lập Protected Ranges cho các cột/hàng quan trọng

Header row, cột công thức, cột kết quả tính toán, hàng tổng cộng - tất cả nên được Protected Range.

5

Cài đặt Data Validation cho cột nhập liệu

Dropdown, number range, date range, custom formula. Ngăn người dùng nhập dữ liệu sai định dạng hoặc ngoài phạm vi cho phép.

6

Tạo Filter Views thay vì dùng Filter thường

Hướng dẫn team dùng Data → Filter views. Tránh dùng Data → Create a filter vì nó ảnh hưởng tất cả người dùng.

7

Đặt tên Named Versions cho các mốc quan trọng

Trước khi thực hiện thay đổi lớn, tạo Named Version: "Trước khi cập nhật lương T2/2026". Để dễ dàng rollback nếu cần.

8

Cài đặt Apps Script Audit Log

Copy script onEdit audit log (phần 8a) để ghi lại mọi thay đổi: ai sửa, ô nào, từ giá trị gì sang giá trị gì, khi nào.

9

Cài đặt tự động backup hàng ngày

Dùng script dailyBackup (phần 8b) hoặc dịch vụ backup bên thứ 3. Lưu backup vào folder riêng trên Google Drive.

10

Review quyền truy cập định kỳ (mỗi tháng)

Kiểm tra danh sách người có quyền. Xóa quyền của nhân viên đã nghỉ việc. Review lại Protected Ranges còn phù hợp không. Cập nhật Permissions sheet.

12. FAQ - Câu Hỏi Thường Gặp

1. Protected Range có ẩn được dữ liệu không?

Không. Protected Range chỉ ngăn chỉnh sửa, người có quyền Viewer vẫn nhìn thấy dữ liệu. Nếu muốn ẩn hoàn toàn (VD: cột Lương), bạn phải: (1) Dùng sheet riêng cho dữ liệu nhạy cảm, hoặc (2) Ẩn cột (Right-click cột → Hide column) - nhưng Editor vẫn có thể unhide.

2. Làm sao để 1 người chỉ xem được hàng của mình?

Google Sheets không hỗ trợ row-level security như database. Cách giải quyết: (1) Dùng Apps Script tạo web app chỉ hiện dữ liệu của người đang đăng nhập, (2) Tạo sheet riêng cho mỗi người với FILTER/QUERY công thức, (3) Dùng IMPORTRANGE + QUERY lọc theo email người dùng.

3. Tôi có thể khôi phục dữ liệu bị xóa bởi người khác không?

Có! Dùng Version History (File → Version history → See version history). Bạn có thể xem từng phiên bản và Restore về thời điểm trước khi bị xóa. Google lưu Version History vĩnh viễn, nên dù bị xóa từ lâu vẫn có thể khôi phục.

4. Owner có thể bị xóa quyền không?

Không. Owner là quyền cao nhất và không thể bị xóa bởi bất kỳ ai. Tuy nhiên, Owner có thể chuyển quyền Owner cho người khác (lúc đó mình thành Editor). Lưu ý: mỗi file chỉ có 1 Owner.

5. Có cách nào tắt tính năng Download/Copy/Print cho Viewer không?

Có! Vào Share → Settings (răng cưa) → bỏ tick "Viewers and commenters can see the option to download, print, and copy". Lưu ý: đây chỉ là biện pháp hạn chế, người dùng có kỹ thuật vẫn có thể lấy dữ liệu bằng cách khác (screenshot, inspect element). Nếu dữ liệu cực kỳ nhạy cảm, không nên đưa lên Google Sheets.

13. Khi Nào Cần Phân Quyền Chuyên Nghiệp Hơn?

Google Sheets cung cấp phân quyền khá tốt cho team nhỏ (dưới 20 người). Tuy nhiên, khi doanh nghiệp lớn hơn, bạn sẽ cần:

  • Row-level security - Mỗi người chỉ thấy dữ liệu của mình
  • Role-based access control (RBAC) - Quản lý quyền theo vai trò, không theo cá nhân
  • Audit trail chi tiết - Log mọi thao tác với timestamp và IP
  • 2FA / SSO - Xác thực hai yếu tố, đăng nhập một lần
  • Data encryption - Mã hóa dữ liệu nhạy cảm

Phần Mềm Quản Lý Bán Hàng SheetStore

Phân quyền làm sẵn thay vì tự dựng bằng Protected Ranges, chạy trên Google Sheets của bạn.

  • ✓ 3 vai trò có sẵn: Admin, Manager, Sales
  • ✓ Mỗi vai trò chỉ xem được dữ liệu cần thiết
  • ✓ Không giới hạn người dùng, mỗi người một tài khoản
  • ✓ Mật khẩu mã hóa SHA-256 + salt
  • ✓ Dữ liệu nằm trong Google Sheets của bạn
  • ✓ Mua một lần 799.000đ, dùng thử 7 ngày
Tìm hiểu phần mềm →

Tổng Kết

Bảo vệ dữ liệu và phân quyền đúng cách là điều bắt buộc khi làm việc nhóm trên Google Sheets. Trong bài này, bạn đã học được:

  • 1.4 cấp độ chia sẻ (Viewer, Commenter, Editor, Owner) và khi nào dùng cấp nào
  • 2.Protected Sheets & Ranges - khóa toàn bộ sheet hoặc chỉ vùng cụ thể
  • 3.Filter Views - mỗi người lọc riêng không ảnh hưởng nhau
  • 4.Data Validation - kiểm soát đầu vào với 7 loại validation
  • 5.Version History - khôi phục dữ liệu bất kỳ lúc nào
  • 6.Apps Script bảo mật - audit log, tự động backup, cảnh báo bất thường
  • 7.5 mô hình phân quyền thực tế cho doanh nghiệp
  • 8.Checklist 10 bước trước khi chia sẻ file cho team

Hãy bắt đầu từ checklist 10 bước, áp dụng ngay vào các file Google Sheets hiện tại của bạn. Phòng bệnh hơn chữa bệnh - thiết lập bảo mật trước khi sự cố xảy ra.

Nếu bảng có nhiều người cùng chỉnh sửa, hãy áp dụng thêm cách khóa ô công thức để tránh sửa nhầm trước khi chia sẻ file cho nhóm.

Chia sẻ bài viết:

Tuân Hoang

Tuân Hoang

Đội ngũ SheetStore

Google SheetsGoogle Apps ScriptCRMAutomationPhần mềm quản lý doanh nghiệp

Google Workspace Certified, 5+ years experience

Bạn thấy bài viết hữu ích?

Đăng ký nhận thông báo khi có bài viết mới.

Nhận thông báo khi có bài viết mới. Không spam, hứa luôn! 😊

Bình luận (0)

Vui lòng đăng nhập để tham gia thảo luận