Gần đây mình có nhận được yêu cầu thêm những chức năng cần thiết cho 1 Form nhập liệu đơn giản. Về cơ bản, bài này ứng dụng nhiều kĩ năng chuyển đổi từ cột sang hàng, và đổi từ hàng sang cột bằng App Script. Sau đây là những chức năng của form đó:
Cho sẵn 1 form điền dữ liệu gồm 19 dòng
Kiểm tra: kiểm tra các ô bắt buộc nhập, nếu chưa nhập – ghi “Chưa nhập”, nếu đã nhập – ghi “OK”
Nhập mới: nhập data mới, sau đó lưu vào sheet database
Sửa cũ: lấy data trong database ra sửa, sau khi sửa có thể chọn tiếp Lưu cũ (update database), hoặc Lưu mới (tạo 1 bản ghi mới trong database)
Lưu ý: để xem, chỉnh sửa file và code, các bạn vui lòng chọn File (tệp) -> Make a copy (copy) để Copy file vào Google Drive của các bạn nhé.
Chú thích
Trong file Google Sheet, các bạn kéo xuống dưới sẽ thấy phần chú thích từng ô, dải ô và cột cho file
Sheet “Nguon” dùng để chứa form nhập liệu, cũng như để thực hiện các chức năng như lưu cũ, lưu mới, hay kiểm tra
Sheet “Dich” chứa database
Nhập mới
Nhập dữ liệu mới trong F3:F21
Lưu ý: khi ô H1 bỏ trống, bạn sẽ không thể điền thêm data mới nào
Toàn bộ code cho Form nhập liệu
function onEdit() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var nguon = ss.getSheetByName("Nguon");
var dich = ss.getSheetByName("Dich");
var h1 = nguon.getRange("H1").getValue();
var i1 = nguon.getRange("I1").getValue();
if (h1 == "Kiểm tra") {
kiemtra();
}
if (h1 == "Chuyển") {
chuyen();
xoahet();
}
if (h1 == "Sửa cũ") {
sua();
}
if (i1 == "Bắt đầu sửa") {
nguon.getRange("H1").setValue("Nhập mới");
}
if (i1 == "Lưu cũ") {
luucu();
xoahet();
}
if (i1 == "Lưu mới") {
chuyen();
xoahet();
}
if (h1 == "") {
xoahet();
}
}
function kiemtra() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var nguon = ss.getSheetByName("Nguon");
var batnhap = nguon.getRange("G3:G21").getValues();
var content = nguon.getRange("F3:F21").getValues();
var ketqua = [];
var j = 0;
for (var i = 0; i < batnhap.length; i++) {
if (batnhap[i] == "*" && content[i] == "") {
ketqua[j] = ["Chưa nhập"];
j++;
} else {
ketqua[j] = ["OK"];
j++;
}
}
nguon.getRange("H3:H21").setValues(ketqua);
}
function chuyen() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var nguon = ss.getSheetByName("Nguon");
var dich = ss.getSheetByName("Dich");
var nguonContent = nguon.getRange("F3:F21").getValues();
dich.getRange(dich.getLastRow() +1, 2, 1, 19).setValues([nguonContent]);
dich.getRange(dich.getLastRow(), 1).setValue(dich.getRange(dich.getLastRow()-1, 1).getValue()+1);
}
function sua() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var nguon = ss.getSheetByName("Nguon");
var dich = ss.getSheetByName("Dich");
var socansua = nguon.getRange("E1").getValue();
var contentdich = dich.getRange(socansua +1, 2, 1, 19).getValues();
var contentSua = [];
//tao xac thuc
var rule = SpreadsheetApp.newDataValidation().requireValueInList(["Bắt đầu sửa","Lưu cũ","Lưu mới"]).build();
nguon.getRange("I1").setDataValidation(rule);
//chuyen doi
for (var i = 0; i < 19; i++) {
contentSua.push([contentdich[0][i]]);
}
nguon.getRange("F3:F21").setValues(contentSua);
}
function luucu() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var nguon = ss.getSheetByName("Nguon");
var dich = ss.getSheetByName("Dich");
var stt = nguon.getRange("E1").getValue();
var nguonContent = nguon.getRange("F3:F21").getValues();
dich.getRange(stt+1, 2, 1, 19).setValues([nguonContent]);
}
function xoahet() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var nguon = ss.getSheetByName("Nguon");
nguon.getRange("E1").clearContent();
nguon.getRange("F3:F21").clearContent();
nguon.getRange("H:H").clearContent();
nguon.getRange("I1").clearContent();
nguon.getRange("I1").clearDataValidations();
}
Need Help?
Khi lập trình App Script cho Google Sheet, nếu các bạn có bất kì thắc mắc nào thì có thể gửi câu hỏi về HocGgSheet.com qua biểu mẫu: