Hướng dẫn

Bảo Vệ & Phân Quyền Google Sheets: Ai Được Xem, Ai Được Sửa [2026]

Tuân HoangTuân Hoang
9 tháng 6, 2026
8 phút đọc
Ảnh minh họa bài viết: Bảo Vệ & Phân Quyền Google Sheets: Ai Được Xem, Ai Được Sửa [2026]

Chuyện Xảy Ra Mỗi Ngày: Dữ Liệu Bị Sửa Nhầm

Bạn vừa dành cả buổi sáng xây dựng một bảng lương chi tiết với đầy đủ công thức tính thuế, BHXH, thưởng KPI. Buổi chiều chia sẻ file cho nhân viên để họ điền giờ làm. Hôm sau mở ra — một loạt công thức ở cột H đã bị ghi đè bởi số liệu nhập tay. File hỏng.

Hoặc tình huống khác: bạn share file báo cáo doanh thu lên Google Drive với link "Anyone can edit" để tiện cho team. Ba tháng sau phát hiện một người ngoài công ty đã xem được toàn bộ số liệu nhạy cảm vì ai đó đã forward link.

Cả hai tình huống đều có thể tránh được nếu bạn hiểu đúng các cấp độ bảo vệ trong Google Sheets. Bài viết này hướng dẫn từng bước — từ chia sẻ có kiểm soát, protect sheet/range, ẩn sheet, khóa công thức, cho đến Apps Script theo dõi ai đã sửa gì.

5 Cấp Độ Bảo Vệ Trong Google Sheets

Google Sheets cung cấp nhiều lớp bảo mật lồng nhau. Hiểu đúng từng cấp giúp bạn chọn giải pháp phù hợp thay vì vừa thừa vừa thiếu.

Cấp 1: Chia Sẻ File (Share Settings) — Cổng Vào Đầu Tiên

Đây là tuyến phòng thủ đầu tiên và quan trọng nhất. Trước khi nghĩ đến protect range hay ẩn sheet, hãy kiểm soát chặt xem ai được vào file.

Google Sheets có 4 mức chia sẻ:

  • Chỉ mình tôi (Private): File hoàn toàn riêng tư, không ai truy cập được dù có link.
  • Cụ thể từng người: Thêm email từng người và gán quyền Viewer / Commenter / Editor riêng biệt. Đây là cách kiểm soát tốt nhất cho file quan trọng.
  • Domain tổ chức: Chỉ người có email @company.com mới truy cập được. Hữu ích cho file nội bộ công ty.
  • Bất kỳ ai có link: Ai có đường dẫn đều vào được — kể cả người bên ngoài tổ chức.

Quy tắc vàng: KHÔNG BAO GIỜ share "Anyone with link — Editor" cho file có dữ liệu quan trọng. Một khi link bị forward ra ngoài, bạn mất hoàn toàn kiểm soát.

Để chia sẻ đúng cách: nhấn nút Share (góc trên phải) → chọn Restricted (chỉ người được mời) → thêm email từng người và chọn quyền phù hợp.

Cấp 2: Protect Sheet Toàn Bộ — Khóa Cả Trang Tính

Khi bạn muốn toàn bộ một sheet không bị sửa (ngoại trừ những người được chỉ định), hãy dùng tính năng Protect sheet.

Các bước thực hiện:

  1. Chuột phải vào tab tên sheet ở dưới cùng → chọn Protect sheet
  2. Đặt mô tả rõ ràng, ví dụ: "Sheet lương tháng 6 — chỉ kế toán trưởng được sửa"
  3. Chọn một trong hai chế độ bảo vệ:
    • Show a warning when editing this sheet: Hiện hộp thoại cảnh báo khi ai đó cố sửa, nhưng họ vẫn có thể bấm OK để sửa. Phù hợp khi chỉ cần nhắc nhở, không cần chặn hoàn toàn.
    • Restrict who can edit this range: Chặn hoàn toàn, chỉ người trong danh sách mới sửa được.
  4. Nếu chọn Restrict: nhấn Set permissions → chọn "Only you" hoặc "Custom" để thêm email cụ thể.

Khi nào dùng: Sheet tổng hợp, sheet báo cáo cuối kỳ, sheet lương, sheet chứa dữ liệu gốc không được thay đổi.

Cấp 3: Protect Range — Khóa Vùng Cụ Thể

Đây là tính năng linh hoạt nhất. Thay vì khóa cả sheet, bạn chỉ khóa những cột/hàng quan trọng (như cột công thức) trong khi vẫn cho phép nhập liệu vào các ô khác.

Ví dụ thực tế: file chấm công có cột A:G để nhân viên điền giờ vào, nhưng cột H:J chứa công thức tính lương tự động — bạn chỉ muốn khóa H:J.

Các bước:

  1. Chọn vùng muốn bảo vệ (ví dụ: cột H:J)
  2. Vào menu Data → Protect sheets and ranges
  3. Nhấn + Add a range
  4. Đặt mô tả và cấu hình quyền tương tự protect sheet

Bạn có thể tạo nhiều protected range trong cùng một sheet. Ví dụ: khóa H:J, khóa thêm cột tổng kết ở N:N, nhưng để nguyên các cột nhập liệu.

Mẹo hay: Tô màu nền khác cho các ô đã được protect để người dùng nhìn vào biết ngay đây là vùng không được sửa — màu xám nhạt hoặc xanh dương nhạt thường được dùng cho việc này.

Cấp 4: Ẩn Sheet — Giấu Khỏi Tầm Nhìn

Đôi khi bạn không muốn người dùng thấy một sheet nhất định — có thể là sheet cấu hình hệ thống, sheet dữ liệu nguồn, hay sheet chứa thông tin nhạy cảm mà bạn chỉ dùng để tham chiếu.

Cách ẩn sheet:

  1. Chuột phải vào tab tên sheet → Hide sheet

Sheet bị ẩn vẫn hoạt động bình thường: các công thức từ sheet khác tham chiếu đến nó vẫn chạy đúng, dữ liệu vẫn được cập nhật. Người dùng thông thường sẽ không thấy tab này.

Lưu ý quan trọng: Người có quyền Editor có thể unhide sheet bất kỳ lúc nào. Vì vậy, ẩn sheet chỉ là biện pháp "giảm rủi ro vô tình" chứ không phải bảo mật thực sự. Nếu sheet chứa dữ liệu cực kỳ nhạy cảm, hãy tách nó thành một file riêng và không chia sẻ file đó.

Dùng cho: Sheet lookup (bảng tra cứu), sheet helper (tính toán trung gian), sheet cấu hình hệ thống, sheet dữ liệu gốc từ import.

Cấp 5: Khóa Công Thức — Bảo Vệ Từng Ô

Khi bạn có một sheet hỗn hợp — vừa có ô nhập liệu tự do vừa có ô công thức — và muốn chỉ khóa đúng những ô có công thức, hãy kết hợp protect range với cách chọn ô thông minh.

Cách chọn nhanh tất cả ô có công thức:

  1. Nhấn Ctrl+G (hoặc Edit → Find and select → Go to special)
  2. Chọn Formulas
  3. Google Sheets sẽ chọn tất cả ô có công thức trong sheet
  4. Vào Data → Protect sheets and ranges → bảo vệ vùng đã chọn

Kết hợp tốt với protect sheet ở chế độ "warning": người dùng vẫn nhập liệu thoải mái vào ô trống, nhưng sẽ nhận cảnh báo nếu vô tình click vào ô công thức.

Apps Script Nâng Cao: Kiểm Soát Quyền Động

Đôi khi bạn cần logic phức tạp hơn những gì Google Sheets cung cấp sẵn — ví dụ: chỉ cho phép sửa nếu user thuộc một nhóm cụ thể, hoặc chặn sửa sau một thời điểm nhất định. Đây là lúc Apps Script phát huy tác dụng.

Script kiểm soát quyền theo email:

// Chỉ cho phép sửa nếu user trong danh sách allowedUsers
function onEdit(e) {
  const user = Session.getActiveUser().getEmail();
  const allowedUsers = ['admin@company.com', 'manager@company.com'];

  // Xác định cột nào là protected (H=8, I=9, J=10)
  const protectedCols = [8, 9, 10];
  const editedCol = e.range.getColumn();

  const isProtectedCol = protectedCols.includes(editedCol);

  if (isProtectedCol && !allowedUsers.includes(user)) {
    // Hoàn tác thay đổi
    if (e.oldValue !== undefined) {
      e.range.setValue(e.oldValue);
    } else {
      e.range.clearContent();
    }
    SpreadsheetApp.getUi().alert(
      'Không có quyền chỉnh sửa',
      `Vùng này được bảo vệ. Chỉ admin và manager mới được sửa. Liên hệ ${allowedUsers[0]} nếu cần hỗ trợ.`,
      SpreadsheetApp.getUi().ButtonSet.OK
    );
  }
}

Script này chạy mỗi khi có bất kỳ thay đổi nào trong spreadsheet, kiểm tra xem ô vừa sửa có nằm trong vùng protected không, và nếu người dùng không có quyền thì sẽ hoàn tác thay đổi ngay lập tức.

Audit Log — Theo Dõi Ai Đã Sửa Gì

Bảo vệ dữ liệu tốt không chỉ là ngăn chặn — mà còn phải ghi lại lịch sử để truy vết khi cần. Script dưới đây tự động ghi mọi thay đổi vào một sheet riêng tên "AuditLog".

// Ghi audit log mỗi khi có thay đổi
function onEdit(e) {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  let logSheet = ss.getSheetByName('AuditLog');

  // Tạo sheet AuditLog nếu chưa có
  if (!logSheet) {
    logSheet = ss.insertSheet('AuditLog');
    logSheet.appendRow(['Thời gian', 'Email', 'Sheet', 'Ô', 'Giá trị cũ', 'Giá trị mới']);
    logSheet.setFrozenRows(1);
  }

  // Bỏ qua nếu đang ghi vào chính sheet AuditLog
  if (e.source.getActiveSheet().getName() === 'AuditLog') return;

  logSheet.appendRow([
    new Date(),
    Session.getActiveUser().getEmail(),
    e.source.getActiveSheet().getName(),
    e.range.getA1Notation(),
    e.oldValue || '(trống)',
    e.value || '(đã xóa)'
  ]);
}

Sau khi cài script này, mọi chỉnh sửa đều được ghi vào sheet AuditLog với đầy đủ: thời gian chính xác, email người sửa, tên sheet, địa chỉ ô, giá trị trước và sau khi sửa. Khi có sự cố, bạn mở AuditLog và tìm ngay được ai đã làm gì lúc mấy giờ.

Cài đặt script: Vào Extensions → Apps Script → dán code vào editor → nhấn Save → script sẽ tự chạy mỗi khi file được sửa.

Chia Sẻ Chuyên Nghiệp Theo Từng Role

Hiểu rõ ba mức quyền Editor / Commenter / Viewer giúp bạn chia sẻ đúng người đúng quyền, tránh tình trạng vừa thừa vừa thiếu.

Quyền Có thể làm gì Dùng cho ai
Viewer Chỉ xem, không sửa, không comment Sếp xem báo cáo, đối tác xem đề xuất, khách hàng xem kết quả
Commenter Xem + thêm comment, không sửa trực tiếp Reviewer nội dung, người phê duyệt kế hoạch
Editor Sửa, thêm, xóa dữ liệu Người nhập liệu trực tiếp, thành viên team cộng tác

Kết hợp thông minh: Gán quyền Editor cho team nhập liệu, nhưng protect range để họ chỉ sửa được vùng nhập liệu (cột A:G) mà không động được vào vùng công thức (cột H:J). Đây là cấu hình lý tưởng cho file dùng chung trong team.

Tip quản lý quyền: Định kỳ mỗi quý, vào Share → Manage access để kiểm tra danh sách người có quyền. Nhân viên nghỉ việc hoặc đối tác hết hợp đồng cần được xóa quyền ngay.

Những Lỗi Phổ Biến Về Bảo Mật Google Sheets

Hầu hết sự cố dữ liệu trong thực tế đều xuất phát từ một trong những lỗi sau:

  • Share "Anyone with link — Editor" cho file quan trọng: Đây là lỗi phổ biến nhất. Một khi link bị leak qua email, chat, hay document khác, bạn không còn kiểm soát được ai đang có quyền sửa file.
  • Không protect cột công thức: File dùng chung mà không khóa công thức thì chỉ cần một cú nhấn Delete nhầm là mất cả hệ thống tính toán. Khôi phục mất rất nhiều thời gian.
  • Gom chung dữ liệu nhiều team vào một file: Team marketing thấy được số liệu lương của team HR, hay team sales thấy được chi phí R&D là điều không nên xảy ra. Tách riêng file cho từng team nếu dữ liệu độc lập.
  • Share file chứa dữ liệu nhạy cảm hơn mức cần thiết: Khi muốn chia sẻ một tab báo cáo, nhiều người share cả file gốc (chứa thêm nhiều sheet khác). Dùng IMPORTRANGE để chỉ export đúng dữ liệu cần thiết sang file mới.
  • Không kiểm tra quyền định kỳ: Người dùng cũ (nhân viên nghỉ, đối tác hết hợp đồng) vẫn còn quyền truy cập mà chủ file quên xóa.

Tips Thực Tế Cho Doanh Nghiệp

  • Tách file theo team: Nếu mỗi team có dữ liệu hoàn toàn độc lập, tạo file riêng cho từng team. Chỉ dùng IMPORTRANGE khi cần tổng hợp lên file báo cáo tổng.
  • Dùng IMPORTRANGE thay vì share file gốc: Tạo một file "báo cáo tổng hợp" import dữ liệu từ nhiều file nguồn. Người xem báo cáo chỉ thấy những gì bạn muốn họ thấy, không truy cập được file gốc.
  • Đặt warning cho sheet quan trọng dù không cần block hoàn toàn: Một hộp thoại cảnh báo "Bạn đang sửa sheet lương tháng 6" đủ để ngăn hầu hết các trường hợp sửa nhầm vô tình.
  • Dùng màu nền để đánh dấu vùng bảo vệ: Tô xám nhạt (#f3f3f3) cho ô công thức, để trắng cho ô nhập liệu. Người dùng nhìn vào là biết ngay nơi nào có thể điền.
  • Review quyền chia sẻ mỗi quý: Đặt lịch nhắc nhở 3 tháng một lần để kiểm tra và dọn dẹp danh sách người có quyền truy cập vào các file quan trọng.
  • Document cấu hình bảo vệ: Ghi lại trong một ô comment hoặc sheet "README" ai được quyền gì, vùng nào được bảo vệ và tại sao. Người tiếp quản sau bạn sẽ rất biết ơn điều này.

Kết Luận

Bảo vệ dữ liệu trong Google Sheets không phải chỉ là bật một nút là xong — mà là xây dựng nhiều lớp phòng thủ phù hợp với từng loại file và từng nhóm người dùng.

Bắt đầu từ cấp cơ bản nhất: kiểm tra ngay cài đặt chia sẻ của các file quan trọng bạn đang dùng. Nếu thấy "Anyone with link — Editor", hãy đổi lại ngay. Sau đó thêm protect range cho cột công thức, và cân nhắc thêm audit log nếu file được nhiều người dùng chung.

Với 5 cấp độ bảo vệ trong bài, bạn có đủ công cụ để xây dựng một hệ thống Google Sheets an toàn, linh hoạt — nơi mọi người có thể làm việc cộng tác hiệu quả mà không lo dữ liệu bị mất hay lộ ra ngoài.

Tham khảo thêm: Google Support — Protect sheets and ranges | Google Support — Share Google Drive files

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