Báo cáo đã gửi đi, vài tiếng sau mới phát hiện doanh thu bị cộng hai lần vì một đơn hàng bị nhập trùng, hoặc một cửa hàng “biến mất” vì ai đó gõ ngày sai định dạng. Phần lớn lỗi báo cáo không nằm ở công thức mà nằm ở dữ liệu đầu vào. Bài viết này hướng dẫn bạn kiểm tra chất lượng dữ liệu tự động bằng n8n: mỗi sáng, trước giờ làm báo cáo, workflow tự quét toàn bộ bảng dữ liệu, chấm điểm chất lượng và nhắn Telegram cho bạn đúng những dòng cần sửa.
🔎 6 LOẠI LỖI WORKFLOW BẮT
▭ Dòng trống◌ Thiếu dữ liệu bắt buộc⧉ Trùng mã giao dịch✕ Sai định dạng⊘ Ngoài danh mục⏱ Dữ liệu chưa cập nhật
🩺 KẾT LUẬN MỖI SÁNG
✅ Sạch🟡 Cần xem🔴 Chưa đạt
kèm điểm chất lượng % và số dòng cần sửa
📂 NỘI DUNG BÀI VIẾT
6 loại lỗi dữ liệu hay gặp nhất
Workflow trong bài kiểm tra một bảng bán hàng trên Google Sheets với các cột MaGiaoDich, NgayBan, CuaHang, SanPham, SoLuong, ThanhTien. Đây là sáu loại lỗi nó tìm:
▭ Dòng trống◌ Thiếu dữ liệu bắt buộc⧉ Trùng mã giao dịch✕ Sai định dạng⊘ Ngoài danh mục⏱ Dữ liệu chưa cập nhật
▭Dòng trống
Ví dụ: Một dòng không có dữ liệu nằm giữa bảng
Nếu bỏ qua: Bộ lọc, Power Query hoặc công thức có thể dừng đọc tại đó, bỏ sót các dòng bên dưới
◌Thiếu dữ liệu bắt buộc
Ví dụ: Có thành tiền nhưng trống cột CuaHang
Nếu bỏ qua: Doanh thu không được tính vào cửa hàng nào, tổng theo cửa hàng lệch với tổng chung
⧉Trùng mã giao dịch
Ví dụ: Cùng một MaGiaoDich xuất hiện hai lần do dán file hai lần
Nếu bỏ qua: Doanh thu bị cộng dư, báo cáo đẹp hơn thực tế
✕Sai định dạng
Ví dụ: Ngày ghi 23/10/2026 thay vì 2026-10-23, thành tiền ghi “1.200.000đ” dạng chữ
Nếu bỏ qua: Dòng bị loại âm thầm khi lọc theo ngày hoặc khi cộng tổng
⊘Ngoài danh mục
Ví dụ: Cửa hàng ghi “Q1” thay vì “Quận 1”
Nếu bỏ qua: Một cửa hàng bị tách thành hai dòng trên biểu đồ
⏱Dữ liệu chưa cập nhật
Ví dụ: Ngày mới nhất trong bảng là 3 ngày trước
Nếu bỏ qua: Báo cáo “tuần này” thực ra thiếu mấy ngày gần nhất
Sáu loại lỗi này tương ứng với các tiêu chí chất lượng dữ liệu quen thuộc: đầy đủ, duy nhất, hợp lệ, nhất quán và kịp thời.
Kiến trúc workflow: 6 node
Workflow chạy lúc 7 giờ 30 sáng, trước giờ làm báo cáo. Node Kiểm tra nối cùng lúc sang hai nhánh: một nhánh ghi kết quả vào lịch sử, một nhánh gửi Telegram.
NODE 1 · LỊCH CHẠY
Schedule Trigger
Khởi chạy lúc 7 giờ 30 sáng mỗi ngày
➜ Tín hiệu bắt đầu
NODE 2 · DATA
Google Sheets – Đọc dữ liệu
Đọc toàn bộ bảng bán hàng
➜ Các dòng giao dịch kèm số dòng
NODE 3 · DATA
Google Sheets – Đọc danh mục
Đọc danh sách cửa hàng hợp lệ
➜ Danh mục cửa hàng
NODE 4 · KIỂM TRA
Code – Kiểm tra
Chạy 6 nhóm quy tắc, chấm điểm, soạn tin nhắn
➜ Kết quả kiểm tra và danh sách lỗi
NODE 5 · LỊCH SỬ
Google Sheets – Ghi lịch sử
Lưu kết quả mỗi lần kiểm tra
➜ Diễn biến chất lượng dữ liệu theo ngày
NODE 6 · THÔNG BÁO
Telegram – Báo kết quả
Nhắn trạng thái và các dòng cần sửa
➜ Tin nhắn Telegram
Xây workflow từng bước
🧰 Bước 0⏰ Bước 1▦ Bước 2▦ Bước 3{ } Bước 4🗂 Bước 5✈ Bước 6
BƯỚC 0🧰 CHUẨN BỊ
Bước 0: Chuẩn bị Google Sheets và Telegram
Tạo (hoặc dùng sẵn) một file Google Sheets gồm ba sheet:
Trong n8n, tạo credential Google và credential Telegram (bot tạo bằng @BotFather, lệnh /newbot), ghi lại Chat ID nơi nhận báo cáo và đặt Timezone của workflow là Asia/Ho_Chi_Minh.
BƯỚC 1⏰ LỊCH CHẠY
Bước 1: Schedule Trigger – chạy 7 giờ 30 mỗi sáng
Thêm node Schedule Trigger, chọn Trigger Interval là Days, giờ 7, phút 30. Nếu bạn đã có workflow báo cáo chạy lúc 8 giờ, lịch này cho bạn nửa tiếng để sửa dữ liệu trước.
BƯỚC 2▦ DATA
Bước 2: Google Sheets – đọc dữ liệu
Thêm node Google Sheets, đặt tên Đọc dữ liệu, chọn thao tác Get row(s) in sheet, trỏ tới sheet DuLieuBanHang. Chạy thử và kiểm tra đầu ra: mỗi dòng có trường row_number là số dòng thật trên sheet. Nhờ trường này, tin nhắn báo lỗi chỉ đúng dòng cần mở ra sửa.
BƯỚC 3▦ DATA
Bước 3: Google Sheets – đọc danh mục
Thêm node Google Sheets thứ hai, đặt tên Đọc danh mục, thao tác Get row(s) in sheet, trỏ tới sheet DanhMuc. Vào Settings của node và bật Execute Once: node nhận hàng trăm item từ bước trước, nếu không bật thì nó sẽ đọc danh mục lặp lại bấy nhiêu lần.
BƯỚC 4{ } KIỂM TRA
Bước 4: Code – kiểm tra 6 nhóm quy tắc
Thêm node Code (JavaScript, chế độ Run Once for All Items), đặt tên Kiểm tra và dán đoạn code sau:
Điểm chất lượng là tỷ lệ dòng không có lỗi. Kết quả có ba mức: Sạch (không lỗi, dữ liệu đã cập nhật), Cần xem (còn vài lỗi nhỏ, điểm từ 98% trở lên) và Chưa đạt (nhiều lỗi hoặc dữ liệu chưa cập nhật). Bạn đổi ngưỡng bằng hằng số NGUONG_DAT ở đầu code. Code dùng DateTime (thư viện Luxon có sẵn trong node Code) để bắt cả những ngày không tồn tại như 2026-02-30.
✅ Sạch🟡 Cần xem🔴 Chưa đạt
BƯỚC 5🗂 LỊCH SỬ
Bước 5: Google Sheets – ghi lịch sử kiểm tra
Thêm node Google Sheets, đặt tên Ghi lịch sử, thao tác Append row in sheet, trỏ tới sheet LichSuKiemTra. Chọn Mapping Column Mode là Map Each Column Manually và điền sáu cột bằng biểu thức tương ứng, ví dụ cột DiemChatLuong là {{ $json.DiemChatLuong }}. Sau vài tuần, sheet này cho bạn thấy chất lượng dữ liệu đang tốt lên hay xấu đi.
BƯỚC 6✈ THÔNG BÁO
Bước 6: Telegram – báo kết quả
Từ node Kiểm tra, kéo thêm một đường nối sang node Telegram, thao tác Send Message: Chat ID là nơi nhận báo cáo, Text là {{ $json.tinNhan }}, và tắt Append n8n Attribution trong Additional Fields. Chạy thử bằng Execute workflow, rồi kích hoạt workflow để lịch 7 giờ 30 có hiệu lực.
Đọc kết quả kiểm tra
Với một bảng có vài lỗi, tin nhắn Telegram trông như sau (dữ liệu minh họa):
Người nhập liệu chỉ cần mở sheet, đi đến đúng số dòng và sửa. Một dòng có thể có nhiều lỗi cùng lúc, nên số lỗi theo loại có thể lớn hơn số dòng có lỗi.
Nối với workflow báo cáo
Kiểm tra chỉ có ích khi nó chặn được báo cáo sai. Có hai cách kết hợp với workflow trong bài Tự động hóa báo cáo tuần với n8n và AI:
Mở rộng quy tắc kiểm tra
📈 Giá trị bất thường
đánh dấu giao dịch có ThanhTien lớn hơn nhiều lần mức thường gặp, vì đó có thể là lỗi gõ thừa số 0.
🗂 Lưu chi tiết từng lỗi
trả về mỗi lỗi một item và ghi vào một sheet riêng để theo dõi lỗi nào hay lặp lại, ai hay nhập sai.
✦ Dùng Claude cho cột chữ tự do
với tên sản phẩm viết nhiều kiểu khác nhau, có thể nhờ Claude gợi ý cách gộp về một tên chuẩn, rồi người phụ trách duyệt trước khi áp dụng.
🛡 Chặn lỗi ngay từ lúc nhập
dùng Data validation của Google Sheets (danh sách thả xuống cho CuaHang, kiểu ngày cho NgayBan, số dương cho ThanhTien) để giảm số lỗi workflow phải báo.
Checklist trước khi kích hoạt
☑ TRƯỚC KHI KÍCH HOẠT
6/6 mục đạt → bật lịch 7:30 mỗi sáng
📅 Muốn học bài bản cách làm sạch, xử lý và phân tích dữ liệu với Power BI, SQL, Python và AI? Xem Lịch khai giảng tháng 10/2026 các khóa Power BI, SQL, Python, AI tại MCNA.
Câu hỏi thường gặp (FAQ)
?Sao không tự động xóa dòng trùng cho nhanh?
Vì workflow không biết dòng nào đúng: hai dòng cùng mã có thể khác thành tiền, và việc xóa nhầm còn nguy hiểm hơn giữ trùng. Báo lỗi kèm số dòng để người nắm nghiệp vụ quyết định là cách an toàn và giúp lỗi không lặp lại.
?Có nên dùng AI để kiểm tra dữ liệu không?
Với các quy tắc rõ ràng như trống, trùng, sai định dạng, code nhanh hơn, rẻ hơn và cho kết quả giống nhau mỗi lần. AI phù hợp với phần mờ hơn như gợi ý chuẩn hóa tên sản phẩm viết nhiều kiểu, và kết quả nên được người duyệt lại.
?Dữ liệu nằm trong Excel trên OneDrive hoặc trong SQL thì sao?
Thay hai node Google Sheets đọc dữ liệu bằng node Microsoft Excel 365 hoặc node database tương ứng. Với SQL, nhiều quy tắc còn có thể viết ngay bằng câu truy vấn, ví dụ GROUP BY MaGiaoDich HAVING COUNT(*) > 1 để tìm mã trùng.
?Bảng có hàng chục nghìn dòng có chạy được không?
Được, code chỉ duyệt qua bảng một lần. Tin nhắn Telegram chỉ hiện 15 lỗi đầu tiên để không quá dài; khi lỗi nhiều, hãy lưu chi tiết ra sheet riêng như phần mở rộng.
?Không biết JavaScript có làm được không?
Được. Bạn dùng nguyên code trong bài, chỉ cần sửa danh sách cột trong hằng số COT cho khớp với bảng của mình, hoặc nhờ Claude thêm quy tắc mới bằng cách mô tả bằng lời.
Kết luận
Kiểm tra chất lượng dữ liệu tự động là lớp bảo vệ rẻ nhất cho mọi báo cáo: 6 node n8n, một đoạn code và một bot Telegram là đủ để bắt dòng trống, dòng trùng, sai định dạng và dữ liệu cũ trước khi chúng lọt vào báo cáo. Chìa khóa là báo đúng dòng cần sửa thay vì sửa âm thầm, chạy trước giờ làm báo cáo, và theo dõi điểm chất lượng theo thời gian. Dữ liệu sạch thì báo cáo mới đáng tin.
Nếu bạn muốn học bài bản cách xử lý, phân tích dữ liệu và tự động hóa với AI, các khóa học tại MCNA Technology School sẽ đồng hành cùng bạn. Đọc thêm: Tự động hóa báo cáo tuần với n8n và AI và AI Automation cho Data Analyst.
👉 Xem lịch khai giảng tháng 10/2026: Power BI, SQL, Python, AI – MCNA

