[Help] – Form nhập liệu đơn giản

https://hocggsheet.com/help-form-nhap-lieu-don-gian/

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)

File tham khảo

https://docs.google.com/spreadsheets/d/1OGq_zz0cMz7bmVpRN6dZHqIAW1BBX0t_v4TwFJ8UYck/edit?usp=sharing

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:

https://goo.gl/forms/K1RRnbtPU2M9J80r2

Last updated

Navigation

Lionel

@Copyright 2023