Tự động điền thời gian khi bạn nhập dữ liệu vào - Google Sheets
Vložit
- čas přidán 6. 09. 2024
- Nhập dữ liệu vào ô là có thời gian ghi lại tức thời. Nhiều bạn đã ngay lập tức nghĩ đến hàm NOW, tuy nhiên khi sử dụng các bạn thấy ngay vấn đề đó là NOW cập nhật liên tục, không phụ thuộc vào việc bạn có thực hiện thay đổi với file hay không.
Trong video này các bạn sẽ được hướng dẫn 2 cách
- Sử dụng công thức hàm rất quen thuộc
- Sử dụng đoạn code để thiết lập
Tin học Cộng hi vọng video này giải quyết được vấn đề nhiều các bạn đang mắc phải trong quá trình sử dụng Google Sheets
Script
-------------------------------------------------------
function onEdit() {
var s = SpreadsheetApp.getActiveSheet();
if( s.getName() == "Xử lý bài toán cập nhật thời gian edit dữ liệu" ) { //kiểm tra tên worksheet của ô cập nhật dữ liệu
var r = s.getActiveCell();
if( r.getColumn() == 1 ) { //kiểm tra xem ô được chỉnh sửa có nằm ở cột A
var nextCell = r.offset(0, 1);
nextCell.setValue(new Date());
}
}
}
-------------------------------------------------------
Nếu hữu ích hi vọng các bạn có thể ủng hộ chúng mình với nút Like nhé
Subcribe để nhanh chóng nhận những video hữu ích hơn nữa nha!
----------------------------------------------------------
Các bạn có thể tham khảo khóa học Google Sheets tại trang tinhoccong.onl... nhé:
e cảm ơn ad rất nhiều. xem nhiều kênh nhưng hiếm ai giảng chi tiết, dễ hiểu như bác. vid này quá hữu ích 1 like 1 sub cho kênh ạ
quá hay. tìm mấy hôm nay mới thấy đúng thứ minhf cần. cảm ơn b nhiều. rất hữu ích
e cám ơn anh nhiều, rất hữu ích, làm xong được rồi, a cũng giải thích rât dễ hiểu nữa, 10 đ k có nhưng ạ
Mình đã thử và làm được dòng code đầu tiên, cảm ơn bạn rất nhiều. Kiến thức rất hữu ích
Trong cùng một bảng tính có nhiều sheet, em chỉ chạy được cod ở một sheet, khi chuyển sang một sheet khác thì sheet trước đó không dùng được nữa. Nhờ add hướng dẫn thêm ạ. Cảm ơn anh
video rất hữu ích! cảm ơn bạn rất nhiều!
Trong trang tính của mình code bị báo lỗi dấu ngoặc }, mình gõ lại xíu là ok. Thanks adm đã chia sẻ!
rất hữu ích luôn ạ . cảm ơn ad
nếu mình có nhiều sheet thì có cách nào cho chạy từng sheet độc lập ko bạn??
rất hay. Cảm ơn ad rất nhiều ạ
quá bổ ít, cảm ơn admin
Video rất bổ ích
Mình sử dụng hàm =IF(M4="";""; IF(L4="";NOW();L4)) nhưng bị 2 lỗi sau: thứ nhất khi cột dữ liệu và đánh lại thì thời gian không cập nhật lại nữa mà để ô trống; thứ hai khi nhập dữ liệu thì cột thời gian đều lên ngày 0/1/1900 12:00AM. nhờ bạn giải thích hộ
rất hữu ích. cảm ơn bạn
rất hay cảm ơn bạn.
hiện tại mình cần Có công thức ô nào để hiển thị ngày dữ liệu được ghi không
nghĩa là đã có dữ liệu nhập ở ô cột A, bây giờ mình muốn một đoạn code Scrip có thể lấy lịch sử sang ô cột B. tks
Chào bạn, cho mình hỏi khi sử dụng code mà chỉ muốn hiện thời gian cập nhật với điều kiện ô cột A đạt đúng 1 giá trị nhất định, thì code sẽ như thế nào nhỉ
Xin hỏi: từ appsheet cập nhật vào google sheet, làm thế nào để nó tự điền thêm giờ vào cột đã chọn ạ?
Hay quá, em cảm ơn nhiều ah
Em nhập function đúng như hướng dẫn nhưng kết quả lại hiện lên là 30/12/1899 ạ, khi em thử sử dụng hàm Now() và Today() đứng riêng thì thời gian vẫn đúng ạ. Sau đó khi em nhập dữ liệu ở ô tiếp theo thì ô time không tự động hiện thời gian dù trước đó hoàn toàn không có dữ liệu gì.
Khi mình tiến hành chia sẽ cho nhưng người có tùy biến chỉnh sửa thì họ nhập dữ liệu nó không nhảy ngày bạn ạ? có thể hướng dẫn mình được không?
Mong admin giúp đỡ
Cách dùng hàm thì nhiều người sủ dụng vẫn có tác dụng bình thường
chứ ạ ?
dạ em thử mà bị lỗi error thì nên khắc phục sao ạ, em để thứ tự cột và công thức như hướng dẫn
mình cũng vậy, ad hỗ trợ giúp với ạ
bạn ơi có cách nào để gọi thời gian thực không hoặc 1 tháng reset 1 lần ấy
KHI CHIA SẺ file thì người được chia sẽ chỉnh sửa vào vùng đối tượng đó , ko thể cập nhật được ngày chỉnh sửa ạ?
Ad ơi cho em hỏi là làm thế nào để chạy được code tự đồng điền thời gian này ở nhiều sheets khác nhau trên cùng 1 file Google Sheet ạ? E thử mã code thì chỉ được một sheet chạy ạ.
AD cho hỏi mình Crtl+[ dẫn đến ô tham chiếu trong excel thì tương ứng trên google sheet là tổ hợp gì ạ. Tks
a ơi e e muốn trả cột thời gian vào phía trước thì đổi mã code ntn vậy a? Mong rằng a sẽ phản hồi ạ
Cảm ơn cảm ơn, xin cảm ơn!!!
Bạn ơi, function này không hoạt động đối với những vùng dữ liệu mình đã nhập từ trước đó đúng ko nhỉ? Mình có sheet đã nhập nhưng ko nhập time đưa vào, giờ sử dụng function này nó ko thực thi với những dữ liệu cũ
Em muốn thời gian trả về 1 cột nhất định thì sẽ thay chỗ offset đó như nào vậy ạ?
Và em muốn kiểm tra nhiều cột hoặc 1 vùng nhiều cột xem có dữ liệu không thì em dùng và / hoặc thì có cách nào khác nữa không ạ?
Nếu được anh đưa 2 đoạn code trên lên trên này được không anh.
Em cảm ơn anh, hy vọng sớm nhận được phản hồi từ anh trợ giúp ạ.
Em muốn thêm nhiều cột nhập để trả ra 1 cột kết quả(giờ) thì dùng thêm đoạn code nào ạ
Mình muốn chuyển dữ liệu từ Date/Time sang dạng Text (String) thì cần làm gì tiếp theo đối với đoạn code Scrip trên ạ
data nhập checkbox thì sao bạn? mình đang vướng checklist hàm now tự cập nhật
đang bị hạn chế chổ copy trên 2 dòng dán vô cột 1 thì bên cột 2 nó chỉ nhảy dữ liệu ở dòng 1 thôi. có cách nào khắc phục cho nó nhảy hết các dòng mình copy dán ko
cho mình hỏi. mình muốn là khi thay đổi dữ liệu ở nhiều cột được chỉ định thì trả về kết quả được không ạ. và cho mình xin đoạn code ạ. xin cảm ơn
dạ cho em hỏi nếu sử dụng script thì có thể cài đặt ở trên nhiều cột không ạ, hay nó chỉ có thể cài đặt trên 1 cột duy nhất trong 1 sheet. em cám ơn ạ
được bạn nhé, nguyên tắc của nó là khi bạn chỉnh sửa dữ liệu (edit) thì code sẽ chạy. Còn dữ liệu thay đổi tại đâu thì do mình tùy biến code
@@tinhoccong nhờ ad cho em xin đoạn code tùy biến đó với ạ. Em cảm ơn.
Mình có thể cấp quyền thêm quyền truy cập cho mail người khác được ko a?
em gặp 1 vấn đề là nếu nhập bằng điện thoại thì ô tự động thời gian ko nhảy, thì phải xử lý sao ạ anh ơi
chào bạn, mình cần lấy thời gian ở 2 cột khác nhau thì sửa script như thế nào nhỉ? Cảm ơn bạn
viết code rất ok, nhưng mình muốn nếu delete dữ liệu thì thời gian cũng tự động xóa, có dữ liệu nó mới hiện thời gian thì sao ạ? hiện tại nếu mình delete nó vẫn hiểu là mình active ô đó nên thời gian nó vẫn tự cập nhật!!
mình đang gặp lỗi là khi mình chia sẻ file cho ng khác điền vào thì thời gian laijko tự nhảy
Đây là trường hợp dữ liệu đc nhập vào, vậy nếu dữ liệu được link qua thì có áp dụng đc k ạ?
Ví dụ dữ liệu đc link từ file gốc sang 1 file khác, khi dữ liệu thay đổi thì file đc link sẽ cập nhật thời gian.
Mong anh rep ạ
Tại sao mình tạo script nhưng những người được share điền thị lại không tự động nhập dữ liệu?
Với câu hỏi của bạn thì trước tiên bạn check lại đoạn script đã chạy okie trong tài khoản owner (là bạn tạo) hay chưa? Sau đó bạn đã chia sẻ quyền edit của file đó chưa? Và hơn nữa bạn phải để ý đoạn scipt đó ghi nhận khu vực thay đổi dữ liệu nào? Liệu người chỉnh đã nhập vào khu vực đó hay chưa? Sau khi xem xét các vấn đề đó vẫn chưa giải đáp được bạn cứ trao đổi lại để mình có thể hỗ trợ thêm cho bạn nha.
Trân trọng!
@@tinhoccong không chạy ở người được chia sẻ ạ
Mình làm hoạt động tốt, cảm ơn tác giả
mình hỏi thêm cách để 2 sheet cùng file thì làm thể nào để code scrips thực thi hay không?
coppy code xuống dưới rồi sửa tên sheet, dòng, cột tương tự như ví dụ
ad ơi cái này sao tài khoản em thì chỉnh đc còn mấy cái tài khoản chia sẻ trên trang tính thì lại ko dùng đc nhỉ
Mình làm được, nhưng thời gian update không đúng.
Đúng ngày tháng năm, nhưng giờ bị sai. VD: mình nhập lúc 15h thì file để 0h
cái này có update được ngày tháng không bác ơi, hay chỉ được giờ phút giây ạ
nếu 1 sheet có nhiều cột cần thay đổi như vật thì code sửa thế nào vậy ạ
m cũng cùng câu hỏi ạ
có cách nào chỉ lấy ngày tháng không có giờ giây không ạ. em làm mãi không được
Bạn ơi nếu muốn nhập vào cột 2 rồi trả kết quả về cột 1 thì sửa như nào nhỉ :D
Khi copy và dán danh sách vào thì code không chạy. Mong ad giúp đỡ ạ!
em cũng vậy
nếu thay vì mình chọn 1 sheet thì thay vào đó là 1 link của trang tính đc k a
kéo ngày tháng tăng dần trong google sheet như nào ạ?cảm ơn bạn.
bạn nhập 2 ô ngày tháng liền nhau ví dụ A1, A2. Sau đó chọn 2 ô rồi đưa chuột vào góc phải phía dưới để kéo xuống dưới là dữ liệu được điền tiếp tự động
bạn có file không cho mình copy dòng lệnh với. thanks bạn
Bạn cho mình hỏi, giờ làm thêm 1 sheet nữa, thì mã code sẽ thêm ở đâu bạn nhỉ? mình có thêm mã rồi nhưng test lại không được
function onEdit() {
var s = SpreadsheetApp.getActiveSheet();
if( s.getName() == "Xử lý bài toán cập nhật thời gian edit dữ liệu" || s.getName() == 'tinhoccong.online') { //kiểm tra tên worksheet của ô cập nhật dữ liệu
var r = s.getActiveCell();
if( r.getColumn() == 1 ) { //kiểm tra xem ô được chỉnh sửa có nằm ở cột A
var nextCell = r.offset(0, 1);
nextCell.setValue(new Date());
}
}
}
vẫn xử lý trong hàm onEdit() kia b nhé. Bạn đưa điều kiện để nó gặp thì sẽ kích hoạt code chạy tương ứng
@@tinhoccong Mình cũng thử dùng script này nhưng chỉ được trên 1 sheet trong spreadsheets thôi. Có cách nào dùng script này trên nhiều sheet không ạ
Bạn ơi khi thay đổi dữ liệu nó không thay đổi thời gian nhập ah.
Thời gian cập nhật chỉ hiện giờ thôi à anh, có hiện ngày tháng không ạ?
Anh ơi cho em hỏi vậy nếu muốn nó chạy trên nhiều sheet thì phải làm thế nào.
Thanks anh!
Ý bạn chạy trên nhiều sheet cụ thể sẽ là như thế nào nhỉ? Có thể tình huống như sau:
- Sửa dữ liệu ở cột A ở bất kỳ sheet nào cũng ghi dấu lại vào 1 vị trí nào đó
- Sửa dữ liệu ở cột A của sheet 1 thì sẽ ghi nhận sang cột B sheet 1, sửa dữ liệu của cột A sheet 2 ghi nhận sang cột B của sheet 2...
Trong đoạn script có phần xác thực tên worksheet đó bạn, đó chính là nơi để thông báo điều kiện script được phép chạy đó bạn ạ
@@tinhoccong em cũng đang cùng câu hỏi. hiện e làm như a thì 1 sheet chạy được. sheet khác lại k chạy được ạ. mong anh hướng dẫn ạ. Thanks anh!
thks
Làm thế nào để chạy được nhiều mã trong 1 sheet vậy bạn
Ad ơi cho em hỏi muốn lấy thời gian tự động ở 2 cột khác nhau thì sửa code như thế nào vậy ạ?
function onEdit() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("NHUNG");
var editedCell = sheet.getActiveCell();
var editedColumn = editedCell.getColumn();
// Kiểm tra xem sheet có tên "NHUNG" không và chỉ thực thi khi thay đổi trên sheet đó
if (sheet) {
// Kiểm tra nếu cột được chỉnh sửa là cột I (cột 9)
if (editedColumn === 9) {
var adjacentCell = editedCell.offset(0, 1); // Ô tương ứng trên cột J
adjacentCell.setValue(new Date());
}
// Kiểm tra nếu cột được chỉnh sửa là cột L (cột 12)
else if (editedColumn === 12) {
var adjacentCell = editedCell.offset(0, 1); // Ô tương ứng trên cột M
adjacentCell.setValue(new Date());
}
}
}
Trong code này mình muốn dữ liệu hiện trên Sheet tên NHUNG
Dữ liệu thay đổi ở cột I và L thì thời gian nhảy ở cột J và M
Thành công
anh ơi nếu muốn cài timestamp cho 1 tháng sau thì sao ạ? Lúc mình nhập dữ liệu vào là cột time đó sẽ hiển thị cho 1 tháng sau í. Em cảm ơn ạ
Thay dòng
nextCell.setValue(new Date());
bằng 2 dòng này
var d1 = new Date()
nextCell.setValue( new Date(d1.setMonth(d1.getMonth()+8)) );
=IF(H9=" "," ",IF(I9=" ",now(),I9))
Anh ơi em để hàm thế này nhưng sao nó không chạy ạ?
Nó hiện là #ERROR! - Lỗi phân tích cú pháp công thức.
---
Thanks anh!
Mình cũng lỗi, chả biết làm sao
nhiều khả năng sai dấu , dấu ; trong hàm rồi các bạn nhé. Chuẩn Anh dùng , còn chuẩn Việt dùng ; đó
Ở tài khoản sử hữu file gg sheet thì code chạy bình thường. Tuy nhiên những người được share tài liệu thì code lại không chạy nhé bạn.
gặp cùng vấn đề, chưa biết cách giải quyết
@@nhanphamvan1736 t nghĩ do định dạng ngày tháng 2 máy tính khác nhau đó
các bác xử lí được lỗi này chưa ạ e cũng đang gặp :))
Mình đã tìm tòi và xử lý như sau:
B1. Cấp quyền truy cập chỉnh sửa cho các thành viên mà bạn muốn share
B2. Báo các thành viên vào tự setup ở mục: Tiện ích mở rộng -> Run -> Cấp quyền truy cập
CÓ AI LÀM ĐC CHƯA Ạ
anh cho em hỏi là là em chỉ muốn tự động hiển thị ngày không hiển thị giờ thì thế nào ạ
bạn format cột đó thành thời gian giờ phút giây nhé
@@tinhoccong Có hàm chỉ lấy ngày tháng không bạn ? Vì mình dùng 1 sheet khác tổng hợp dữ liệu. Nên 1 bên điền ngày, 1 bên lại là hàm có cả giờ thì ko lấy đc kết quả
ad ơi nếu chỉ muốn trả thời gian về 1 ô thì ntn ạ?
bạn thay đoạn var nextCell = ....getRange(địa chỉ ô muốn trả kết quả thời gian cập nhật). Code gốc sử dụng offset để dịch chuyển theo, thì ở đây mình getRange vào 1 địa chỉ duy nhất thôi là được b nhé
TypeError: Cannot read property 'getSheetByName' of null
anh ơi em bị lỗi này thì phải làm sao ạ?
Sao e làm theo rồi vẫn bị lỗi error ạ
Vậy muốn tắt tự động điền thì sao ạ?
Nếu mình muốn tự động hiển thị thời gian cho dữ liệu cụ thể ví dụ dữ liệu nhập là Done còn dữ liệu khác hoặc rỗng thì ko hiện dc ko huynh
Cách 1 vẫn bị update thời gian đó bạn ơi
Không thấy file mô tả?
e ko sử dụng đc scrip a ơi
bạn xem hướng dẫn đoạn script về tên worksheet, địa chỉ cột sử dụng, địa chỉ dữ liệu thay đổi thì scrip mới hoạt động đúng nhé