Bỏ qua menu, đến nội dung
📢 Chào mừng các bạn đến với Rcom Dăm Yi blog - Kho tài liệu và giải pháp công nghệ bổ ích! Hệ thống liên tục cập nhật dữ liệu học tập mới.
Bài 19. Sổ Đầu Bài (Phần 3) - Xóa & Thống kê

Thời gian dùng thử đã hết!

Phần mềm đã vượt quá 15 ngày dùng thử miễn phí. Vui lòng nhập mã bản quyền.

Bài 19. Sổ Đầu Bài: Xóa Dữ Liệu & Báo Cáo Thống Kê

Trọng tâm bài học:
1. Thuật toán Xóa (Delete): Cần xác định chính xác số thứ tự dòng (Row Index) trên Google Sheets để xóa đúng đối tượng. Bắt buộc phải có hộp thoại xác nhận (Confirm) để tránh vô tình click nhầm.
2. Xử lý mảng (Array processing): Ứng dụng kỹ thuật đếm phần tử trong mảng (tương tự vòng lặp trong Python) bằng hàm filter() của JavaScript để tạo Bảng điều khiển (Dashboard) theo dõi thi đua trực quan.

1. Mã nguồn Back-end (Code.gs)

Hàm xóa dữ liệu trên Google Sheets rất đơn giản nhờ phương thức deleteRow(). Tuy nhiên, sự nguy hiểm là nếu xóa sai dòng, dữ liệu sẽ mất vĩnh viễn.

// Hàm Xóa một tiết học khỏi Sổ Đầu Bài
function xoaTietHoc(rowIndex) {
  let sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("SoDauBai");
  
  // Xóa dòng tại vị trí rowIndex
  sheet.deleteRow(rowIndex);
  
  return "Đã xóa dữ liệu thành công!";
}
💡 Lưu ý quan trọng: Khác với Cập nhật (Update) dùng setValue(), khi sử dụng deleteRow(), toàn bộ các dòng bên dưới sẽ bị đẩy lên trên. Do đó, thao tác xóa nên được thực hiện cẩn thận, và ngay sau khi xóa thành công trên Server, Frontend phải lập tức gọi lại hàm traCuuSoDauBai() (đã học ở Bài 18) để cập nhật lại danh sách, đảm bảo các rowIndex của các dòng còn lại không bị sai lệch.

2. Thuật toán Thống kê (Front-end JS)

Thay vì bắt Server (Google Script) phải đếm số lượng rồi mới trả về, ta tận dụng luôn mảng dữ liệu (Array) đã tải xuống trình duyệt để thống kê. Việc này giúp ứng dụng chạy nhanh hơn và giảm tải cho Server.

// Trích xuất code trong hàm vẽ bảng (JS)
function capNhatThongKe(data) {
  // data là mảng 2 chiều chứa danh sách các tiết học
  let tongSo = data.length;
  
  // Lọc và đếm số tiết đạt loại A (cột thứ 6 trong mảng, index = 6)
  let soLoaiA = data.filter(row => row[6] === "A").length;
  let soLoaiB = data.filter(row => row[6] === "B").length;
  let soLoaiC = data.filter(row => row[6] === "C").length;

  // Đổ dữ liệu ra Giao diện HTML
  document.getElementById("valTotal").innerText = tongSo;
  document.getElementById("valA").innerText = soLoaiA;
  // ...
}

3. Giao diện Tổng hợp Báo cáo & Quản lý

Bảng Điều Khiển Ban Giám Hiệu (Dashboard)

Tổng số tiết đã dạy
0
Tiết học loại A (Tốt)
0
Tiết học loại B (Khá)
0
Tiết học loại C (TB)
0
Ngày Lớp Tiết Môn & Bài dạy XL Quản trị

💬 Gửi bình luận của bạn

📌 Danh sách đóng góp bài viết