Chào các bạn, mình là thành viên mới của diễn đàn. Hôm nay mình muốn chia sẻ một chút kinh nghiệm cá nhân về việc tự động hóa trong Google Sheets, cụ thể là cách đồng bộ dữ liệu giữa các sheet khác nhau bằng Google Apps Script. Mình thấy trong chuyên mục đã có bài về sao chép dữ liệu, nhưng bài này sẽ đi sâu hơn vào việc cập nhật liên tục và tự động.
Trong công việc, đôi khi chúng ta cần cập nhật thông tin từ một sheet (ví dụ: danh sách sản phẩm) sang một sheet khác (ví dụ: báo cáo bán hàng) mỗi khi có sự thay đổi. Làm thủ công rất tốn thời gian và dễ sai sót. Với Google Apps Script, việc này trở nên đơn giản hơn nhiều.
Ý tưởng cơ bản:
- Chúng ta sẽ sử dụng hàm
onEdit(e)để kích hoạt script mỗi khi có sự thay đổi trong sheet nguồn. - Script sẽ kiểm tra xem sự thay đổi có thuộc phạm vi cần xử lý không.
- Nếu có, script sẽ lấy dữ liệu mới và cập nhật vào sheet đích.
Ví dụ đơn giản:
Giả sử bạn có Sheet1 chứa danh sách sản phẩm (Cột A: Mã SP, Cột B: Tên SP) và Sheet2 bạn muốn hiển thị danh sách này. Khi bạn thay đổi Tên SP ở Sheet1, Sheet2 sẽ tự động cập nhật.
Bạn vào Extensions > Apps Script, dán đoạn code sau:
function onEdit(e) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheetNguon = ss.getSheetByName("Sheet1"); // Tên sheet nguồn
var sheetDich = ss.getSheetByName("Sheet2"); // Tên sheet đích
// Kiểm tra xem sự kiện edit có xảy ra ở sheet nguồn không
if (e.range.getSheet().getName() == "Sheet1") {
var row = e.range.getRow();
var col = e.range.getColumn();
// Chỉ cập nhật khi thay đổi ở cột Tên SP (cột 2)
if (col == 2 && row > 1) { // Bỏ qua header
var maSP = sheetNguon.getRange(row, 1).getValue(); // Lấy Mã SP
var tenSPMoi = e.value; // Lấy Tên SP mới
// Tìm dòng tương ứng ở sheet đích và cập nhật Tên SP
var dataDich = sheetDich.getDataRange().getValues();
for (var i = 1; i < dataDich.length; i++) { // Bắt đầu từ dòng 2 (index 1)
if (dataDich[i][0] == maSP) { // So sánh Mã SP
sheetDich.getRange(i + 1, 2).setValue(tenSPMoi);
break; // Thoát vòng lặp sau khi tìm thấy
}
}
}
}
}
Lưu ý:
- Bạn cần thay đổi tên sheet và số cột cho phù hợp với file của mình.
- Code này chỉ là ví dụ cơ bản. Với dữ liệu lớn hoặc phức tạp hơn, bạn có thể cần tối ưu hóa để script chạy nhanh hơn.
Hy vọng chia sẻ này hữu ích cho mọi người. Nếu có thắc mắc hoặc cách làm hay hơn, mọi người cùng thảo luận nhé!