Chào các bạn,
Dạo gần đây mình có làm việc với một file Google Sheets khá lớn, có nhiều sheet con và cần sao chép dữ liệu từ sheet này sang sheet khác theo một điều kiện nhất định. Việc làm thủ công thì vừa tốn thời gian mà lại dễ sai sót. Sau một hồi tìm tòi thì mình phát hiện ra cách dùng Google Apps Script để tự động hóa việc này. Nay chia sẻ lại cho anh em nào cần nhé.
Tình huống:
Giả sử bạn có một sheet chính tên là 'DuLieuGoc' chứa toàn bộ dữ liệu, và bạn muốn tạo các sheet con cho từng phòng ban (ví dụ: 'PhongBanA', 'PhongBanB', ...). Dữ liệu từ 'DuLieuGoc' sẽ được tự động cập nhật sang các sheet phòng ban tương ứng dựa trên cột 'Phòng Ban'.
Giải pháp dùng Google Apps Script:
Đầu tiên, bạn cần mở Script editor trong file Google Sheets của mình (Tools -> Script editor). Sau đó, dán đoạn code sau vào:
function copyDataByDepartment() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sourceSheet = ss.getSheetByName('DuLieuGoc');
var data = sourceSheet.getDataRange().getValues();
// Lấy danh sách các phòng ban từ cột 'Phòng Ban' (giả sử cột này là cột C, index 2)
var departments = {};
for (var i = 1; i < data.length; i++) {
var department = data[i][2]; // Cột C
if (department && !departments[department]) {
departments[department] = true;
// Tạo sheet mới nếu chưa có
if (!ss.getSheetByName(department)) {
ss.insertSheet(department);
}
}
}
// Sao chép dữ liệu vào từng sheet phòng ban
for (var deptName in departments) {
var targetSheet = ss.getSheetByName(deptName);
var departmentData = [];
// Lấy header
departmentData.push(data[0]);
for (var i = 1; i < data.length; i++) {
if (data[i][2] === deptName) {
departmentData.push(data[i]);
}
}
// Xóa dữ liệu cũ và ghi dữ liệu mới
targetSheet.clearContents();
targetSheet.getRange(1, 1, departmentData.length, departmentData[0].length).setValues(departmentData);
}
}
Cách sử dụng:
- Thay 'DuLieuGoc' và tên cột 'Phòng Ban' (cột C, index 2) trong code cho phù hợp với file của bạn.
- Chạy hàm
copyDataByDepartment. Bạn có thể tạo một nút bấm để gọi hàm này cho tiện. - Để tự động chạy khi có thay đổi, bạn có thể thiết lập trigger trong Script editor.
Hy vọng mẹo nhỏ này giúp ích được cho các bạn!