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àifunctionxoaTietHoc(rowIndex) {letsheet=SpreadsheetApp.getActiveSpreadsheet().getSheetByName("SoDauBai");// Xóa dòng tại vị trí rowIndexsheet.deleteRow(rowIndex);return"Đã xóa dữ liệu thành cô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)functioncapNhatThongKe(data) {// data là mảng 2 chiều chứa danh sách các tiết họclettongSo = data.length;// Lọc và đếm số tiết đạt loại A (cột thứ 6 trong mảng, index = 6)letsoLoaiA = data.filter(row => row[6] ==="A").length;letsoLoaiB = data.filter(row => row[6] ==="B").length;letsoLoaiC = data.filter(row => row[6] ==="C").length;// Đổ dữ liệu ra Giao diện HTMLdocument.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)
| Ngày | Lớp | Tiết | Môn & Bài dạy | XL | Quản trị |
|---|
📌 Danh sách đóng góp bài viết