Tạo thư viện Apps Script mà bạn có thể dùng để xoá các hàng trùng lặp trong dữ liệu bảng tính.
Mục tiêu
- Thiết lập tập lệnh.
- Chạy tập lệnh.
Điều kiện tiên quyết
Để sử dụng mẫu này, bạn cần có các điều kiện tiên quyết sau:
- Tài khoản Google (các tài khoản Google Workspace có thể phải được quản trị viên phê duyệt).
- Một trình duyệt web có quyền truy cập vào Internet.
Thiết lập tập lệnh
Để xây dựng thư viện, hãy làm theo các bước sau:
- Đăng nhập vào Tài khoản Google của bạn.
- Để mở trình chỉnh sửa tập lệnh, hãy truy cập vào script.google.com.
- Ở trên cùng bên trái, hãy nhấp vào Dự án mới.
Xoá bất kỳ mã nào trong trình chỉnh sửa tập lệnh rồi dán vào mã bên dưới.
Nhấp vào biểu tượng Lưu .
Ở trên cùng bên trái, hãy nhấp vào Dự án không có tiêu đề.
Đặt tên cho tập lệnh của bạn là Xóa các hàng trùng lặp và nhấp vào Đổi tên.
Nhấp vào Triển khai > Triển khai mới.
Bên cạnh mục Chọn loại, hãy nhấp vào Bật các loại triển khai > Thư viện.
Nhập nội dung mô tả về thư viện, chẳng hạn như Xoá hàng trùng lặp. Bất kỳ ai có quyền truy cập vào thư viện đều có thể xem nội dung mô tả này.
Nhấp vào Triển khai.
Ở bên trái, hãy nhấp vào biểu tượng Cài đặt dự án .
Trong Mã nhận dạng, hãy sao chép mã tập lệnh để sử dụng trong bước sau.
Chạy tập lệnh
Để sử dụng thư viện, ít nhất bạn phải có quyền xem đối với dự án Apps Script. Vì đã tạo thư viện, bạn có các quyền cần thiết để sử dụng thư viện đó. Nếu bạn muốn cho phép người khác sử dụng thư viện, hãy cấp cho họ quyền xem đối với dự án Apps Script.
Để sử dụng thư viện, hãy làm theo các bước sau:
- Mở một bảng tính Google Trang tính có dữ liệu chứa các hàng trùng lặp. Để sử dụng bảng tính mẫu, hãy tạo bản sao của bảng tính Mẫu trùng lặp hàng.
- Nhấp vào Tiện ích > Apps Script.
- Bên cạnh Thư viện, hãy nhấp vào biểu tượng Thêm thư viện .
- Trong mục Mã tập lệnh, hãy dán mã tập lệnh từ dự án Apps Script trong thư viện mà bạn đã sao chép trong phần trước.
- Nhấp vào Tra cứu.
- Trong mục Version (Phiên bản), hãy chọn 1.
- Nhấp vào Thêm.
Xoá bất kỳ mã nào trong trình chỉnh sửa tập lệnh rồi dán vào mã bên dưới.
function runLibrary() { Removeduplicaterows.removeDuplicates(); }
Trong trình đơn thả xuống hàm, hãy chọn runLibrary.
Nhấp vào Chạy.
Quay lại bảng tính để xem dữ liệu đã cập nhật mà không có hàng trùng lặp.
Xem xét mã
Để xem lại mã Apps Script cho giải pháp này, hãy nhấp vào phần Xem mã nguồn bên dưới:
Xem mã nguồn
Trước tiên, tập lệnh thực hiện một lệnh gọi duy nhất đến bảng tính để truy xuất tất cả dữ liệu. Bạn có thể chọn đọc từng hàng của trang tính, nhưng các thao tác JavaScript sẽ nhanh hơn đáng kể so với việc trao đổi với các dịch vụ khác như Bảng tính. Bạn càng thực hiện ít lệnh gọi thì càng nhanh. Điều này rất quan trọng vì mỗi quá trình thực thi tập lệnh có thời gian chạy tối đa là 6 phút.
Biến data
là một mảng 2 chiều JavaScript chứa tất cả các giá trị trong trang tính. newData
là một mảng trống, trong đó tập lệnh đặt tất cả các hàng không trùng lặp.
Vòng lặp for
đầu tiên lặp lại từng hàng trong mảng 2 chiều của data
. Đối với mỗi hàng, vòng lặp thứ hai sẽ kiểm tra xem đã tồn tại một hàng khác có dữ liệu phù hợp trong mảng newData
hay chưa. Nếu đây không phải là hàng trùng lặp, hàng sẽ được đẩy vào mảng newData
.
Cuối cùng, tập lệnh sẽ xoá nội dung hiện có của trang tính và chèn nội dung của mảng newData
.
Sửa đổi
Bạn có thể chỉnh sửa thư viện bao nhiêu tuỳ thích cho phù hợp với nhu cầu của mình. Dưới đây là nội dung sửa đổi không bắt buộc.
Xoá hàng có dữ liệu trùng khớp trong một số cột
Thay vì xoá các hàng khớp hoàn toàn, bạn có thể xoá những hàng có dữ liệu phù hợp chỉ trong một hoặc hai cột. Để làm được điều đó, bạn có thể thay đổi câu lệnh có điều kiện.
Trong mã mẫu, hãy cập nhật dòng sau:
if(row.join() == newData[j].join()){ duplicate = true; }
Thay thế dòng bằng mã sau:
if(row[0] == newData[j][0] && row[1] == newData[j][1]){ duplicate = true; }
Câu lệnh có điều kiện ở trên sẽ tìm các bản sao mỗi khi hai hàng có cùng dữ liệu trong cột đầu tiên và cột thứ hai của trang tính.
Người đóng góp
Mẫu này do Romain Vialard, một chuyên gia nhà phát triển của Google tạo ra. Theo dõi Romain trên Twitter @romain_vialard.
Mẫu này được Google duy trì với sự trợ giúp của các chuyên gia nhà phát triển của Google.