Chào các anh chị em trong diễn đàn,
Dạo này mình đang mày mò với Google Apps Script để tự động hóa một số tác vụ trên Google Sheets. Hôm nay, mình muốn chia sẻ một mẹo nhỏ mà mình vừa khám phá ra, hy vọng sẽ hữu ích cho những ai làm việc với dữ liệu và cần thông báo ngay khi có sự thay đổi.
Chuyện là, mình có một file Google Sheet theo dõi tiến độ dự án, và sếp muốn biết ngay khi có bất kỳ cập nhật nào về trạng thái công việc. Thay vì cứ phải mở file ra xem thủ công, mình đã viết một đoạn script nhỏ để tự động gửi email thông báo cho mình (hoặc người nhận khác) mỗi khi có ô nào đó trong một phạm vi nhất định bị thay đổi.
Về cơ bản, mình sử dụng hàm onEdit(e) của Google Apps Script. Hàm này sẽ tự động chạy mỗi khi có một ô nào đó được chỉnh sửa trong sheet. Bên trong hàm này, mình sẽ kiểm tra xem ô nào vừa được sửa, phạm vi sửa đổi có nằm trong vùng mình quan tâm không. Nếu có, script sẽ lấy thông tin về ô đó (tên sheet, địa chỉ ô, giá trị cũ, giá trị mới) và gửi một email thông báo.
Đây là đoạn code minh họa:
function onEdit(e) {
var range = e.range;
var sheet = range.getSheet();
var editedRow = range.getRow();
var editedCol = range.getColumn();
// Chỉ theo dõi thay đổi trong Sheet 'DuLieu' và từ cột C trở đi
if (sheet.getName() == "DuLieu" && editedCol >= 3) {
var subject = "Cập nhật tiến độ dự án";
var body = "Có thay đổi trong file theo dõi dự án:\n" +
"Sheet: " + sheet.getName() + "\n" +
"Ô: " + range.getA1Notation() + "\n" +
"Giá trị cũ: " + e.oldValue + "\n" +
"Giá trị mới: " + e.value;
// Gửi email đến địa chỉ của bạn
MailApp.sendEmail("your.email@example.com", subject, body);
}
}
Lưu ý: Bạn cần thay thế "DuLieu" bằng tên sheet bạn muốn theo dõi và "your.email@example.com" bằng địa chỉ email nhận thông báo.
Cách này thực sự tiết kiệm thời gian và giúp mình nắm bắt thông tin kịp thời. Mọi người thấy sao, có ý tưởng nào hay hơn để cải thiện không ạ?