HƯỚNG DẪN TẠO APPS SCRIPT COPY Q5:U5 TỪ CHITIET_T1 SANG CHITIET_T2 ĐẾN CHITIET_T31
Mục đích của Apps Script này là tự động sao chép vùng Q5 từ sheet ChiTiet_T1 sang đúng vùng Q5 của các sheet từ ChiTiet_T2 đến ChiTiet_T31.
Script sẽ giúp không phải mở từng sheet để copy thủ công.
Bước 1: Mở Google Apps Script
Mở file Google Sheets cần thao tác.
Trên thanh menu chọn:
Extensions/Tiện ích mở rộng → Apps Script
Google sẽ mở cửa sổ Apps Script ở tab mới.
Bước 2: Xóa code mặc định
Trong cửa sổ Apps Script, nếu đang có đoạn:
function myFunction() {
}hãy xóa toàn bộ đoạn này.
Bước 3: Copy đoạn code dưới đây
Copy toàn bộ đoạn code sau và dán vào file Code.gs:
function copyQ5U5To31Sheets() {
const ss = SpreadsheetApp.openById(
"1p6m0A_yNUnDR28DpnRiMkkbu7NGPVyEN0sF451Q1G-Y"
);
const source = ss.getSheetByName("ChiTiet_T1");
if (!source) {
throw new Error("Không tìm thấy sheet ChiTiet_T1");
}
const sourceRange = source.getRange("Q5:U5");
for (let i = 2; i <= 31; i++) {
const target = ss.getSheetByName("ChiTiet_T" + i);
if (!target) continue;
sourceRange.copyTo(
target.getRange("Q5:U5"),
SpreadsheetApp.CopyPasteType.PASTE_NORMAL,
false
);
}
Logger.log(
"Đã copy Q5:U5 từ ChiTiet_T1 sang ChiTiet_T2 đến ChiTiet_T31"
);
}Bước 4: Lưu Apps Script
Sau khi dán code, nhấn:
Save/Lưu
hoặc nhấn:
Ctrl + S
Có thể đặt tên project, ví dụ:
Copy Q5-U5 sang 31 sheet
Bước 5: Chạy Apps Script
Ở phía trên cửa sổ Apps Script, tại ô chọn hàm, chọn:
copyQ5U5To31Sheets
Sau đó nhấn:
Run/Chạy
Bước 6: Cấp quyền lần đầu
Nếu đây là lần đầu chạy Apps Script, Google sẽ yêu cầu cấp quyền.
Thực hiện:
Review permissions/Xem lại quyền
→ Chọn tài khoản Google đang sử dụng.
Nếu xuất hiện cảnh báo:
Google hasn't verified this app
chọn:
Advanced/Nâng cao
→ Go to...
→ Allow/Cho phép
Chỉ cần cấp quyền ở lần chạy đầu tiên.
Bước 7: Kiểm tra kết quả
Sau khi script chạy xong, vùng:
ChiTiet_T1!Q5
sẽ được copy sang:
ChiTiet_T2!Q5
ChiTiet_T3!Q5
ChiTiet_T4!Q5
...
ChiTiet_T31!Q5
Như vậy chỉ cần chạy script một lần là có thể copy dữ liệu sang tối đa 30 sheet.
Script hoạt động như thế nào?
Sheet nguồn là:
ChiTiet_T1
Vùng nguồn là:
Q5
Script sử dụng vòng lặp:
for (let i = 2; i <= 31; i++)để lần lượt tìm các sheet:
ChiTiet_T2
ChiTiet_T3
ChiTiet_T4
...
ChiTiet_T31Sau đó copy vùng Q5 của ChiTiet_T1 sang vùng Q5 của từng sheet.
Nếu thiếu một sheet thì sao?
Trong script có dòng:
if (!target) continue;Điều này có nghĩa là nếu một sheet không tồn tại, script sẽ tự động bỏ qua.
Ví dụ nếu không có:
ChiTiet_T15
thì script vẫn tiếp tục chạy sang:
ChiTiet_T16
ChiTiet_T17
...
cho đến ChiTiet_T31.
Script sẽ không bị dừng chỉ vì thiếu một sheet.
Script sẽ copy những gì?
Script đang sử dụng:
SpreadsheetApp.CopyPasteType.PASTE_NORMALCó nghĩa là thao tác gần giống:
Ctrl + C → Ctrl + V
trong Google Sheets.
Nó có thể copy:
Công thức
Giá trị
Định dạng
Một số thuộc tính của ô
Nếu Q5 chứa công thức thì công thức sẽ được copy sang các sheet đích.
Lưu ý quan trọng
Khi chạy script, dữ liệu hiện có tại:
Q5
của các sheet từ:
ChiTiet_T2 đến ChiTiet_T31
sẽ bị ghi đè.
Vì vậy nên kiểm tra trước khi chạy nếu các ô này đang có dữ liệu cần giữ lại.
Khi cần chạy lại
Nếu sau này bạn sửa công thức hoặc dữ liệu tại:
ChiTiet_T1!Q5
và muốn cập nhật lại cho toàn bộ các sheet còn lại, chỉ cần:
Extensions/Tiện ích mở rộng → Apps Script
→ chọn:
copyQ5U5To31Sheets
→ nhấn:
Run/Chạy
Script sẽ copy lại vùng mới nhất từ ChiTiet_T1.
Tóm tắt
Sheet nguồn: ChiTiet_T1
Vùng nguồn: Q5
Sheet đích: ChiTiet_T2 đến ChiTiet_T31
Vùng đích: Q5
Sheet bị thiếu: tự động bỏ qua
Dữ liệu cũ tại Q5:U5: sẽ bị ghi đè
Cách chạy: Extensions/Tiện ích mở rộng → Apps Script → Run/Chạy
Chỉ cần cài Apps Script một lần, những lần sau chỉ cần chạy lại hàm copyQ5U5To31Sheets là được.
Chú ý link: https://docs.google.com/spreadsheets/d/1p6m0A_yNUnDR28DpnRiMkkbu7NGPVyEN0sF451Q1G-Y/edit....
thì ID: 1p6m0A_yNUnDR28DpnRiMkkbu7NGPVyEN0sF451Q1G-Y
.png)