Cách tự động đổi tên Sheet theo dữ liệu 1 ô trong Google Sheet

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:

  1. Mở Google Sheets của bạn.
  2. Vào Tiện ích mở rộng (Extensions) > Apps Script.
  3. 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!");
      }
    }
  }
}
  1. Nhấn biểu tượng Lưu (hình đĩa mềm).
  2. 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 onEdit là 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:

  1. Trong giao diện Apps Script, bấm vào biểu tượng Đồng hồ (Triggers) bên trái.
  2. Bấm + Thêm trình kích hoạt (Add Trigger).
  3. 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)
  4. Bấm Lưu

Xahara

Xahara

Xin chào! Xahara là tác giả bài viết mà các bạn vừa đọc. Tôi là một người viết blog toàn thời gian và đam mê viết ở nhiều lĩnh vực. Rất vui được gặp gỡ với bạn đọc tại website Vnboo.com này. Nếu thấy bài viết của tôi hay và hấp dẫn, hãy cho tôi một comment khích lệ nhé.

Để lại bình luận của bạn về bài viết

Leave a reply

Vnboo
Logo
Enable registration in settings - general