Menu

App script quản lý rủi ro cho cá nhân & doanh nghiệp với báo cáo chuẩn định dạng biểu đồ

Tự động tạo chuỗi ID duy nhất trong Google Sheets bằng Apps Script

Lưu Uyên Nghĩa 18/03/2026 16:17 367 lượt xem 3 trả lời

Chào mọi người,

Dạo này mình đang làm một dự án nhỏ trên Google Sheets và gặp phải vấn đề cần tạo ra các mã ID duy nhất cho từng dòng dữ liệu. Làm thủ công thì dễ sai sót và mất thời gian, nên mình đã tìm tòi và viết một đoạn Apps Script nhỏ để giải quyết vấn đề này một cách tự động.

Ý tưởng rất đơn giản: mỗi khi có một dòng dữ liệu mới được thêm vào, script sẽ tự động sinh ra một ID duy nhất dựa trên một số tiêu chí (ví dụ: ngày tháng, tiền tố cố định, và một số thứ tự tăng dần).

Đây là đoạn code mình đã dùng:

function generateUniqueId() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getActiveSheet();
  var lastRow = sheet.getLastRow();
  var sheetName = sheet.getName();

  // Lấy tiền tố dựa trên tên sheet (ví dụ: 'INV' cho sheet 'Invoices')
  var prefix = sheetName.substring(0, 3).toUpperCase(); 

  // Lấy ngày tháng hiện tại theo định dạng YYYYMMDD
  var today = new Date();
  var dateStr = Utilities.formatDate(today, Session.getScriptTimeZone(), "yyyyMMdd");

  // Số thứ tự tăng dần (ví dụ: 001, 002, ...)
  var sequenceNumber = "000" + (lastRow + 1);
  sequenceNumber = sequenceNumber.substring(sequenceNumber.length - 3);

  var uniqueId = prefix + "-" + dateStr + "-" + sequenceNumber;

  // Ghi ID vào cột đầu tiên của dòng mới
  sheet.getRange(lastRow + 1, 1).setValue(uniqueId);
}

function onEdit(e) {
  var range = e.range;
  var sheet = range.getSheet();
  var editedRow = range.getRow();

  // Chỉ chạy khi có dữ liệu được nhập vào một sheet cụ thể và không phải cột ID
  if (sheet.getName() === "Dữ liệu" && range.getColumn() !== 1 && editedRow > 1) {
    // Kiểm tra xem ô ID đã có giá trị chưa
    if (sheet.getRange(editedRow, 1).getValue() === "") {
      generateUniqueId();
    }
  }
}

Lưu ý:

  • Bạn cần thay đổi tên sheet và logic tạo ID cho phù hợp với nhu cầu của mình.
  • Đoạn code onEdit(e) sẽ tự động chạy mỗi khi có chỉnh sửa trong sheet. Tuy nhiên, để nó hoạt động ổn định, bạn có thể cần thiết lập một trigger (bộ kích hoạt) trong Apps Script để chạy hàm generateUniqueId khi có dòng mới được thêm vào.

Hy vọng chia sẻ này hữu ích cho mọi người. Nếu có cách làm hay hơn hoặc gặp vấn đề gì, mọi người cùng thảo luận nhé!

4

Hay quá bạn ơi! Tự động sinh ID bằng Apps Script đúng là giải pháp hiệu quả để tránh sai sót và tiết kiệm thời gian thật.

Mình cũng từng gặp vấn đề tương tự, nhưng cách của bạn nghe có vẻ linh hoạt hơn nhiều. Bạn có thể chia sẻ thêm về cách bạn xử lý phần "số thứ tự tăng dần" được không? Ví dụ như làm sao để đảm bảo nó luôn tăng và không bị trùng lặp nếu có nhiều người cùng thêm dữ liệu gần như cùng lúc?

1

Hay đó bạn! Tự động sinh ID bằng Apps Script đúng là giải pháp hiệu quả để tránh sai sót và tiết kiệm thời gian thật.

Mình cũng từng gặp vấn đề tương tự, nhưng cách của bạn nghe có vẻ linh hoạt hơn nhiều. Bạn có thể chia sẻ thêm về cách bạn xử lý phần "số thứ tự tăng dần" được không? Ví dụ như làm sao để đảm bảo nó luôn tăng và không bị trùng lặp nếu có nhiều người cùng thêm dữ liệu gần như cùng lúc?

5

Mình thấy cách này hay đó! Tự động hóa việc tạo ID giúp tránh sai sót thủ công rất nhiều. Bạn đã nghĩ đến việc xử lý trường hợp khi có nhiều người cùng thêm dữ liệu vào sheet gần như đồng thời chưa? Làm thế nào để đảm bảo ID được sinh ra vẫn duy nhất trong tình huống đó?

2

Bạn cần đăng nhập để trả lời chủ đề này.

Đăng nhập Đăng ký