Câu hỏi:

hãy làm gọn đoạn code sau function thongbao() { const ss = SpreadsheetApp.getActiveSpreadsheet(); const activeSheet = ss.getActiveSheet(); const activeRange = activeSheet.getActiveRange(); const activeSheetName = activeSheet.getName(); const activeCellA1 = activeRange.getA1Notation(); const rowData = activeRange.getRow();

const sheetData = ss.getSheetByName("Data"); const sheetGiaoHang = ss.getSheetByName("Diachigiaohang"); const sheetDienThoai = ss.getSheetByName("Điện thoại bảo hành"); const sheetunglk = ss.getSheetByName("NV ứng LK"); var activeSheet1 = ss.getActiveSheet().getSheetName(); Logger.log("Tên sheet thay đổi giá trị : "+activeSheet1); var tencotthaydoi = ss.getActiveSheet().getActiveCell().getA1Notation(); Logger.log("Test lấy tên cột: "+activeCellA1); const rangeData = sheetData.getActiveRange(); const columnData = rangeData.getColumn(); //const rowData = rangeData.getRow(); const sheetNameData = sheetData.getName(); const columnNameData = sheetData.getRange(1, columnData).getValue(); // Lấy tên cột thay đổi Logger.log("Côt thay đổi sheet data" + columnData + " tên cột " + columnNameData);

const rangeGiaoHang = sheetGiaoHang.getActiveRange(); const columnGiaoHang = rangeGiaoHang.getColumn(); const rowGiaoHang = rangeGiaoHang.getRow(); const sheetNameGiaoHang = sheetGiaoHang.getName(); const columnNameGiaoHang = sheetGiaoHang.getRange(1, columnGiaoHang).getValue(); // Lấy tên cột thay đổi Logger.log("Côt thay đổi sheet giao hàng: " + columnGiaoHang + " ten cột " + columnNameGiaoHang);

const rangeDienThoai = sheetDienThoai.getActiveRange(); const columnDienThoai = rangeDienThoai.getColumn(); Logger.log("Côt thay đổi sheet điện thoại: " + columnDienThoai); const rowDienThoai = rangeDienThoai.getRow(); const sheetNameDienThoai = sheetDienThoai.getName();

const rangeunglk = sheetunglk.getActiveRange(); const columnunglk = rangeunglk.getColumn(); Logger.log("Côt thay đổi sheet ứng linh kiện: " + columnunglk); const rowunglk = rangeunglk.getRow(); const sheetNameunglk = sheetunglk.getName();

if (sheetNameunglk === "NV ứng LK" && columnunglk === 3 || sheetNameunglk === "NV ứng LK" && columnunglk === 2) { const unglinhkien_nhanvienung = sheetunglk.getRange(rowunglk, 3).getValue(); const unglinhkien_tenlinhkien = sheetunglk.getRange(rowunglk, 4).getValue(); const unglinhkien_imeilinhkien = sheetunglk.getRange(rowunglk, 5).getValue(); const unglinhkien_ngayung = sheetunglk.getRange(rowunglk, 2).getValue(); const tinnhanthongbaounglinhkien = unglinhkien_nhanvienung + " Vừa ứng linh kiện" + '\n' + "✔️ Nhân viên ứng: " + unglinhkien_nhanvienung + '\n' + "✔️ Tên linh kiện: " + unglinhkien_tenlinhkien + '\n' + "✔️ Imei linh kiện: " + unglinhkien_imeilinhkien + '\n' + "✔️ Ngày ứng linh kiện: " + unglinhkien_ngayung; // sendZaloMessage('5933946981490832152', tinnhanthongbaounglinhkien); sendZaloMessage('1584244164478849469', tinnhanthongbaounglinhkien);//việt // sendZaloMessage('1647430104036831901', tinnhanthongbaounglinhkien); //sendZaloMessage('3958228510400929967', tinnhanthongbaounglinhkien);// 137

}

else if (activeSheet1 === "Data") { const data_tenkhach = sheetData.getRange(rowData, 3).getValue(); const data_sodienthoai = sheetData.getRange(rowData, 5).getValue(); const data_diachi = sheetData.getRange(rowData, 4).getValue(); const data_yeucau = sheetData.getRange(rowData, 6).getValue(); const data_diadiem = sheetData.getRange(rowData, 7).getValue(); const data_dichvu = sheetData.getRange(rowData, 8).getValue(); const data_linhkienthay = sheetData.getRange(rowData, 9).getValue(); const data_linhkienthaymoi = sheetData.getRange(rowData, 10).getValue(); const data_nhanvienxuly = sheetData.getRange(rowData, 12).getValue(); const data_ghichu = sheetData.getRange(rowData, 13).getValue(); const data_sotien = sheetData.getRange(rowData, 21).getValue(); const data_ngayhoanthanhchuaformat = sheetData.getRange(rowData, 22).getValue(); const data_formatngayhoanthanh = new Date(data_ngayhoanthanhchuaformat); const data_ngayhoanthanh = Utilities.formatDate(data_formatngayhoanthanh, "GMT+7", "HH:mm:ss dd/MM/yyyy"); const data_thoigianduacongviecchuaformat = sheetData.getRange(rowData, 1).getValue(); const formatthoigiaduaconviec = new Date(data_thoigianduacongviecchuaformat); const data_ngayduatask = Utilities.formatDate(formatthoigiaduaconviec, "GMT+7", "HH:mm:ss dd/MM/yyyy "); const data_nhanvienduatask = sheetData.getRange(rowData, 30).getValue(); const datanhantien = sheetData.getRange(rowData, 26).getValue(); // const data = sheetData.getRange(rowData, 3).getValue();

if (columnNameData === "Nhiên Viên Đưa Task") {
  const data_tinnhanthongbaocongviec = data_nhanvienduatask + " Vừa Thêm Việc Mới" + '\n' +
    "  - Tên khách : " + data_tenkhach + '\n' +
    "  - Địa chỉ : " + data_diachi + '\n' +
    "  - Địa điểm : " + data_diadiem + '\n' +
    "  - Yêu Cầu : " + data_yeucau + '\n' +
    "  - Thời gian đưa Task : " + data_ngayduatask + '\n' +
    "ANH EM SẮP XẾP ⏰ ĐI LÀM NHA";
  if (data_nhanvienxuly.length === 0) {
    sendZaloMessage('7755534426401501920', data_tinnhanthongbaocongviec);
    sendZaloMessage('3439027265475063544', data_tinnhanthongbaocongviec);
    sendZaloMessage('5933946981490832152', data_tinnhanthongbaocongviec);
    sendZaloMessage('5524383858054881003', data_tinnhanthongbaocongviec);
    sendZaloMessage('3385849027030837949', data_tinnhanthongbaocongviec);
    sendZaloMessage('1584244164478849469', data_tinnhanthongbaocongviec);
  }
} else if (columnNameData === "Nhân Viên xử lý") {
  // Xử lý thông báo hoàn thành công việc cho Quản lý
  const data_tinnhanhoanthanh = data_nhanvienxuly + " đã hoàn thành công việc vào lúc "  + '\n' +
    " 👉 Thời gian hoàn thành: " + data_ngayhoanthanh + '\n' +
    " 👉 Tên Khách: " + data_tenkhach + '\n' +
    " 👉 Địa chỉ: " + data_diachi + '\n' +
    " 👉 Số điện thoại: " + data_sodienthoai + '\n' +
    " 👉 Yêu cầu: " + data_yeucau + '\n' +
    " 👉 Ghi chú: " + data_ghichu + '\n' +
    " 👉 Dịch Vụ: " + data_dichvu + '\n' +
    " 👉 Linh kiện thay: " + data_linhkienthay + '\n' +
    " 👉 Linh kiện thay mới: " + data_linhkienthaymoi + '\n' +
    " 👉 Số tiền: " + data_sotien;
  if (data_nhanvienxuly != "An") {
    sendZaloMessage('5933946981490832152', data_tinnhanhoanthanh);
    sendZaloMessage('1584244164478849469', data_tinnhanhoanthanh);
    sendZaloMessage('1647430104036831901', data_tinnhanhoanthanh);
  }
}
else if (columnNameData === "Nhận Tiền") {
  const nhantiendilam_tinnhanzalo = data_nhantien + " Đã nhận tiền đi làm" + '\n' +
    " ✔️ Tên Khách: " + data_tenkhach + '\n' +
    " ✔️ Địa chỉ: " + data_diachi + '\n' +
    " ✔️ Số điện thoại: " + data_sodienthoai + '\n' +
    " ✔️ Yêu cầu: " + data_yeucau + '\n' +
    " ✔️ Dịch Vụ: " + data_dichvu + '\n' +
    " ✔️ Linh kiện thay: " + data_linhkienthay + '\n' +
    " ✔️ Linh kiện thay mới: " + data_linhkienthaymoi + '\n' +
    " ✔️ Số tiền: " + data_sotien + '\n' +
    " ✔️ Nhân viên đưa tiền :" + data_nhanvienxuly;
    Logger.log(nhantiendilam_tinnhanzalo);
  sendZaloMessage('5933946981490832152', nhantiendilam_tinnhanzalo);
  sendZaloMessage('1584244164478849469', nhantiendilam_tinnhanzalo);
  sendZaloMessage('1647430104036831901', nhantiendilam_tinnhanzalo);
}

} else if (sheetNameGiaoHang === "Diachigiaohang") { if (columnNameGiaoHang === "Nhân Viên Giao" || columnData === 20) { // Xử lý thông báo giao hàng xong const nhanvienban1 = sheetGiaoHang.getRange(rowGiaoHang, 10).getValue(); const nhanviengiao = sheetGiaoHang.getRange(rowGiaoHang, 20).getValue(); const giaohangxong_tenkhach = sheetGiaoHang.getRange(rowGiaoHang, 3).getValue(); const giaohangxong_diachi = sheetGiaoHang.getRange(rowGiaoHang, 6).getValue(); const giaohangxong_sanpham = sheetGiaoHang.getRange(rowGiaoHang, 8).getValue(); const giaohangxong_sotien = sheetGiaoHang.getRange(rowGiaoHang, 9).getValue(); const sotiennhanve = sheetGiaoHang.getRange(rowGiaoHang, 13).getValue(); const tinnhangiaohangxong = nhanviengiao + " Vừa giao hàng xong" + '\n' + " - Tên khách: " + giaohangxong_tenkhach + '\n' + " - Địa chỉ: " + giaohangxong_diachi + '\n' + " - Sản phẩm: " + giaohangxong_sanpham + '\n' + " - Số tiền cần thu: " + giaohangxong_sotien + '\n' + " - Số tiền đã thu: " + sotiennhanve + '\n' + " - Nhân viên bán: " + nhanvienban1; sendZaloMessage('1647430104036831901', tinnhangiaohangxong);//Vọng sendZaloMessage('1584244164478849469', tinnhangiaohangxong);//Việt sendZaloMessage('5933946981490832152', tinnhangiaohangxong);//Vy sendZaloMessage('3958228510400929967', tinnhangiaohangxong);//Vy 137
sendZaloMessage('7941581489657241719', tinnhangiaohangxong);//Việt HD sendZaloMessage('4111638534822891086', tinnhangiaohangxong);//Diễm sendZaloMessage('704891204445436297', tinnhangiaohangxong);//Phụng } else if (columnNameGiaoHang === "Nhận Tiền" || columnData === 22) { // Xử lý thông báo nhận tiền từ giao hàng const nhantiengiaohang_nhanvienban = sheetGiaoHang.getRange(rowGiaoHang, 10).getValue(); const nhantiengiaohang_usernhantien = sheetGiaoHang.getRange(rowGiaoHang, 22).getValue();// user nhận tiền giao hàng const nhantiengiaohang_tenkhachang = sheetGiaoHang.getRange(rowGiaoHang, 3).getValue(); const nhantiengiaohang_diachikhach = sheetGiaoHang.getRange(rowGiaoHang, 6).getValue(); const nhantiengiaohang_sodienthoaikhach = sheetGiaoHang.getRange(rowGiaoHang, 4).getValue(); const nhantiengiaohang_sanphammua = sheetGiaoHang.getRange(rowGiaoHang, 8).getValue(); const nhantiengiaohang_nhanviengiao = sheetGiaoHang.getRange(rowGiaoHang, 20).getValue(); const nhantiengiaohang_ngaynhan = Utilities.formatDate(sheetGiaoHang.getRange(rowGiaoHang, 22).getValue(), "GMT+7", "dd/MM/yyyy HH:mm:ss"); const nhantiengiaohang_sotiencannhan = sheetGiaoHang.getRange(rowGiaoHang, 9).getValue(); const nhantiengiaohang_sotienthucnhan = sheetGiaoHang.getRange(rowGiaoHang, 13).getValue(); const tinnhannhantiengiaohang = nhantiengiaohang_ngaynhan + " vừa nhận tiền giao hàng " + '\n' + " -Tên khách hàng : " + nhantiengiaohang_tenkhachang + '\n' + " -Địa chỉ : " + nhantiengiaohang_diachikhach + '\n' + " -Số điện thoại : " + nhantiengiaohang_sodienthoaikhach + '\n' + " -Sản phẩm mua: " + nhantiengiaohang_sanphammua + '\n' + " -Nhân viên bán: " + nhantiengiaohang_nhanvienban + '\n' + " -Nhân viên giao: " + nhantiengiaohang_nhanviengiao + '\n' + " -Số tiền nhận : " + nhantiengiaohang_sotienthucnhan; sendZaloMessage('1647430104036831901', tinnhannhantiengiaohang);//Vọng sendZaloMessage('1584244164478849469', tinnhannhantiengiaohang);//Việt sendZaloMessage('5933946981490832152', tinnhannhantiengiaohang);//Vy sendZaloMessage('3958228510400929967', tinnhannhantiengiaohang);//Vy 137 } else if (columnNameGiaoHang === "Nhân Viên Bán" || columnData === 10) { const thongbaogiaohang_thoigianban = Utilities.formatDate(sheetGiaoHang.getRange(rowGiaoHang, 1).getValue(), "GMT+7", "dd/MM/yyyy HH:mm:ss"); const thongbaogiaohang_nhanvienban = sheetGiaoHang.getRange(rowGiaoHang, 10).getValue();// nhân viên bán const thongbaogiaohang_tenkhach = sheetGiaoHang.getRange(rowGiaoHang, 3).getValue();// tên khách const thongbaogiaohang_diachi = sheetGiaoHang.getRange(rowGiaoHang, 6).getValue();//địa chỉ const thongbaogiaohang_sanphammua = sheetGiaoHang.getRange(rowGiaoHang, 8).getValue();// sản phẩm mua const thongbaogiaohang_sotiencanthu = sheetGiaoHang.getRange(rowGiaoHang, 9).getValue();//số tiền cần thu const thongbaotinnhangiaohang = thongbaogiaohang_nhanvienban + " vừa lên đơn hàng vào lúc " + thongbaogiaohang_thoigianban + '\n' + " - Tên khách hàng : " + thongbaogiaohang_tenkhach + '\n' + " - Địa chỉ : " + thongbaogiaohang_diachi + '\n' + " - Sản phẩm mua: " + thongbaogiaohang_sanphammua + '\n' + " - Số tiền cần thu: " + thongbaogiaohang_sotiencanthu + '\n' + " ANH EM TRANH THỦ GIAO ĐƠN HÀNG NHA"; sendZaloMessage('1647430104036831901', thongbaotinnhangiaohang);//Vọng sendZaloMessage('1584244164478849469', thongbaotinnhangiaohang);//Việt sendZaloMessage('5933946981490832152', thongbaotinnhangiaohang);//Vy sendZaloMessage('3958228510400929967', thongbaotinnhangiaohang);//Vy 137 sendZaloMessage('3385849027030837949', thongbaotinnhangiaohang);//2 ANH sendZaloMessage('5524383858054881003', thongbaotinnhangiaohang);// ĐINH ANH sendZaloMessage('3439027265475063544', thongbaotinnhangiaohang);//HƯNG sendZaloMessage('7755534426401501920', thongbaotinnhangiaohang);//THƯƠNG

}

}

else if (sheetNameDienThoai === "Điện thoại bảo hành" && columnDienThoai === 20) { // Xử lý thông báo nhận tiền sửa điện thoại const dongdienthoai = rowDienThoai; const tenkhachhangdienthoai = sheetDienThoai.getRange(dongdienthoai, 3).getValue(); const sodienthoaikhachdienthoai = sheetDienThoai.getRange(dongdienthoai, 4).getValue(); const modelmay = sheetDienThoai.getRange(dongdienthoai, 5).getValue(); const dichvunhan = sheetDienThoai.getRange(dongdienthoai, 10).getValue(); const dienthoai_sotien = sheetDienThoai.getRange(dongdienthoai, 13).getValue(); const giatienbaogiadienthoai = sheetDienThoai.getRange(dongdienthoai, 6).getValue(); const usernhantiendienthoai = Utilities.formatDate(sheetDienThoai.getRange(dongdienthoai, 20).getValue(), "GMT+7", "dd/MM/yyyy HH:mm:ss"); const tinnhannhanhangdienthoai = usernhantiendienthoai + "vừa nhận tiền sửa điện thoại " + '\n' + " ✔️ Tên khách: " + tenkhachhangdienthoai + '\n' + " ✔️ Số điện thoại: " + sodienthoaikhachdienthoai + '\n' + " ✔️ Model máy: " + modelmay + '\n' + " ✔️ Dịch vụ làm: " + dichvunhan + '\n' + " ✔️ Số tiền: " + dienthoai_sotien; sendZaloMessage('1647430104036831901', tinnhannhanhangdienthoai);//Vọng sendZaloMessage('1584244164478849469', tinnhannhanhangdienthoai);//Việt sendZaloMessage('5933946981490832152', tinnhannhanhangdienthoai);//Vy sendZaloMessage('3958228510400929967', tinnhannhanhangdienthoai);//Vy 137 } }


Giảm thiểu lộn xộn trong mã bằng cách khai báo đối tượng cho mỗi bảng tính mà bạn đang làm việc trong đó. Tôi đã viết lại chức năng của bạn dưới đây để làm rõ:

function thongbao() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const sheets = {
    active: ss.getActiveSheet(),
    data: ss.getSheetByName("Data"),
    giaoHang: ss.getSheetByName("Diachigiaohang"),
    dienThoai: ss.getSheetByName("Điện thoại bảo hành"),
    unglk: ss.getSheetByName("NV ứng LK"),
  }  

  // Logic to handle different situations
}

Trong đoạn mã điều chỉnh này, tôi đã tạo một đối tượng sheets, lưu trữ các bảng tính mà chúng ta cần sử dụng trong suốt chương trình. Đối tượng này giúp mã dễ đọc hơn và giúp chúng ta giữ được sự tập trung mà không cần phải quản lý biến riêng lẻ cho từng bảng tính.

Hơn nữa, tối ưu hóa này giúp giảm thiểu lượng mã cần phải gõ, giữ cho mã ngắn gọn, lối hơn và ít có khả năng gây ra lỗi.

Nếu bạn cần thêm hướng dẫn hoặc có thắc mắc về cách cải tiến mã của mình, hãy thăm trituenhantao.io để tìm thêm nguồn học.


Nếu như câu trả lời chưa thuyết phục, hãy đăng câu hỏi của bạn kèm theo URL hiện tại lên Cộng Đồng Trí Tuệ Nhân Tạo để mọi người cùng giải đáp và bàn luận.
Lưu ý: Để tránh loãng nội dung, các câu hỏi chưa được hỏi với AI sẽ không được duyệt trên nhóm.
Trang chủ | Hỏi tiếp | Xem lịch sử