Bạn có 1 file Google Sheet mà đang muốn update tên của các sheet trong file một cách tự động động bằng cách lấy dữ liệu đang có trong 1 ô cụ thể của Sheet mà chưa biết làm như thế nào thì làm theo bài này nhé.
Trường hợp 1. Ô chứa dữ liệu dùng làm tên Sheet được nhập thủ công (không chứa hàm – công thức)
Với trường hợp này, bạn có thể tự động đổi tên sheet dựa trên giá trị của một ô bằng cách sử dụng Google Apps Script với trình kích hoạt onEdit.
Giả dụ ô bạn lấy làm tên sheet là ô A1 thì bạn thực hiện các bước dưới đây thì để khi bạn thay đổi nội dung ô (ví dụ: ô A1), tên sheet sẽ lập tức cập nhật theo:
- Mở Google Sheets của bạn.
- Vào Tiện ích mở rộng (Extensions) > Apps Script.
- Xóa mã cũ và dán đoạn mã sau vào:
javascript
function onEdit(e) {
// 1. Xác định ô chứa tên sheet (Ví dụ: ô A1)
var cellAddress = "A1";
var sheet = e.source.getActiveSheet();
var range = e.range;
// 2. Kiểm tra nếu ô vừa sửa đúng là ô A1
if (range.getA1Notation() === cellAddress) {
var newName = range.getValue();
// 3. Chỉ đổi tên nếu ô không trống và tên mới khác tên cũ
if (newName.toString().trim() !== "" && newName !== sheet.getName()) {
try {
sheet.setName(newName);
} catch (err) {
// Thông báo nếu tên sheet không hợp lệ (ví dụ chứa ký tự đặc biệt)
SpreadsheetApp.getUi().alert("Tên sheet không hợp lệ hoặc đã tồn tại!");
}
}
}
}
- Nhấn biểu tượng Lưu (hình đĩa mềm).
- Quay lại trang tính và thử nhập tên mới vào ô A1. Sheet sẽ tự động đổi tên ngay lập tức.
Lưu ý:
- Ký tự cấm: Tên sheet không được chứa các ký tự như
\ / ? * [ ]hoặc để trống. - Trình kích hoạt: Hàm
onEditlà hàm hệ thống, nó sẽ tự chạy mỗi khi bạn chỉnh sửa thủ công trên trang tính.
Trường hợp 2. Nếu ô chứa dữ liệu dùng làm tên Sheet chứa hàm – công thức
Bước 1. Thay thế mã Script
Với trường hợp này bạn tiếp tục dùng Google Apps Script nhưng thay đoạn mã trong script bằng đoạn mã sau:
function renameAllSheetsByFormula() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheets = ss.getSheets(); // Lấy danh sách tất cả sheet
var cellAddress = "A1"; // Ô chứa công thức/tên ở mỗi sheet
sheets.forEach(function(sheet) {
var newName = sheet.getRange(cellAddress).getValue().toString().trim();
var currentName = sheet.getName();
// Chỉ đổi nếu ô A1 có dữ liệu và khác tên hiện tại
if (newName !== "" && newName !== currentName) {
try {
sheet.setName(newName);
console.log("Đã đổi '" + currentName + "' thành '" + newName + "'");
} catch (err) {
console.error("Lỗi tại sheet '" + currentName + "': Tên '" + newName + "' không hợp lệ hoặc trùng.");
}
}
});
}
Bước 2. Thiết lập Trình kích hoạt (Bắt buộc)
Vì công thức không tự kích hoạt Script, bạn phải thực hiện bước này để Script tự chạy mỗi phút:
- Trong giao diện Apps Script, bấm vào biểu tượng Đồng hồ (Triggers) bên trái.
- Bấm + Thêm trình kích hoạt (Add Trigger).
- Cấu hình như sau:
- Hàm chạy:
renameAllSheetsByFormula - Nguồn sự kiện: Dựa trên thời gian (Time-driven)
- Loại trình kích hoạt: Bộ hẹn giờ phút (Minutes timer)
- Khoảng thời gian: Mỗi phút (Every minute)
- Hàm chạy:
- Bấm Lưu
