Giới thiệu

Mình tình cờ phát hiện một đoạn script thú vị từ một câu hỏi trên Google Docs Help Forum. Chức năng của đoạn script này là sẽ tự thêm thời gian khi bạn thêm nội dung vào một cột bạn chọn từ trước. Chức năng này rất hữu ích cho những ai thường xuyên ghi chú lại nội dung của các buổi họp hoặc làm những việc cần lưu lại thời gian khi có nội dung mới được thêm vào sheet.

Đoạn script tự động chèn thời gian khi thêm mới nội dung một cột

Giới thiệu sơ qua là thế, bây giờ thử thêm đoạn script này vào một file Google Sheets nào.

Áp dụng

Giả sử mình muốn dùng cột đầu tiên của sheet để ghi lại thời gian, còn cột thứ hai để ghi ghi chú. Việc đầu tiên phải làm là format cột đầu tiên thành kiểu dữ liệu là ngày tháng. Bạn có thể chọn More Formats và tự sắp xếp cách thể hiện thời gian miễn sao nó là kiểu dữ liệu ngày tháng.

Format kiểu dữ liệu cột là kiểu ngày tháng

Thêm đoạn script sau vào bằng cách vào Tools > Script editor và save lại:

function onEdit(e) {
  if (e.range.columnStart == 1 || e.range.rowStart == 1 || e.range.columnStart != 2) return;
  if (!e.range.offset(0, -1).getValue()) {
    e.range.offset(0, -1).setValue(new Date());
  }
}

Giải thích ý nghĩa script

function onEdit(e) {
    ...
}

Khi sự kiện onEdit xảy ra (nội dung của sheet thay đổi) thì thực hiện những lệnh bên trong.

if (e.range.columnStart == 1 || e.range.rowStart == 1 || e.range.columnStart != 2) return;

Nếu ô bị thay đổi nội dung nằm ở cột đầu tiên (cột để lưu thời gian), hoặc hàng đầu tiên (hàng tiêu đề), hoặc khác cột thứ hai (cột ghi nội dung) thì thoát script và không làm gì cả.

if (!e.range.offset(0, -1).getValue()) {
    e.range.offset(0, -1).setValue(new Date())
}

Nếu ô ở cột bên trái ô hiện tại (thuộc cột nội dung) là ô trống thì thêm thời gian ở thời điểm hiện tại vào ô đó.

Trong trường hợp bạn muốn thời gian được cập nhật khi bạn thay đổi ô nội dung và không quan tâm đến thời gian trước đó thì bỏ lệnh if ở chỗ này đi, đoạn script sẽ còn lại là:

function onEdit(e) {
  if (e.range.columnStart == 1 ||
      e.range.rowStart == 1 ||
      e.range.columnStart != 2) {
    return;
  }
  e.range.offset(0, -1).setValue(new Date());
}

Tham khảo thêm câu trả lời trên Google Docs Help Forum nếu bạn muốn hiển thị thông báo khi thay đổi nội dung ở ô đã có nội dung rồi.