// Paste this into Code.gs in the Apps Script editor
var SPREADSHEET_ID = 'REPLACE_WITH_YOUR_SPREADSHEET_ID'; // <- change this var SHEET_NAME = 'Nhat_ky_hanh_trinh';
function doGet(e) { return HtmlService.createHtmlOutputFromFile('Index') .setTitle('Theo dõi hành trình xe 60A-00233 - An Phước'); }
/**
Lưu bản ghi hành trình vào Google Sheet
data: object chứa các trường giống form */ function saveEntry(data) { var ss = SpreadsheetApp.openById(SPREADSHEET_ID); var sheet = ss.getSheetByName(SHEET_NAME); if (!sheet) { sheet = ss.insertSheet(SHEET_NAME); sheet.appendRow(['Timestamp', 'Ngày sử dụng', 'Họ tên người sử dụng', 'Nhiệm vụ công tác', 'Điểm đi', 'Điểm đến', 'Km đầu', 'Km cuối', 'Quãng đường (Km)', 'Nhiên liệu tiếp thêm (L)', 'Ghi chú tình trạng xe', 'Người ghi']); }
// Normalize fields and compute distance var kmStart = Number(data.km_start) || 0; var kmEnd = Number(data.km_end) || 0; var distance = (kmEnd && kmEnd >= kmStart) ? (kmEnd - kmStart) : '';
var row = [ new Date(), data.ngay || '', data.user || '', data.task || '', data.start || '', data.end || '', data.km_start || '', data.km_end || '', distance, data.fuel || '', data.notes || '', data.recorder || '' ];
sheet.appendRow(row); return {result: 'success'}; }
/**
Tùy chọn: hàm lấy dữ liệu để Văn phòng xem (tổng hợp, lọc)
Ví dụ trả về 100 bản ghi gần nhất */ function getLastEntries(limit) { limit = limit || 100; var ss = SpreadsheetApp.openById(SPREADSHEET_ID); var sheet = ss.getSheetByName(SHEET_NAME); if (!sheet) return []; var data = sheet.getDataRange().getValues(); // includes header var rows = data.slice(1).reverse().slice(0, limit).reverse(); return rows; }
/* ========================= Index.html (front-end) ========================= */
Theo dõi hành trình xe 60A-00233 - An Phước
Theo dõi hành trình xe 60A-00233 — Xã An Phước
Form cập nhật nhanh cho lái xe. Dữ liệu lưu trực tiếp vào Google Sheet: Nhat_ky_hanh_trinh.
Bản ghi gần đây
| Ngày | Người | Nhiệm vụ | Km đầu | Km cuối | Quãng (Km) | Fuel (L) |
| Chưa có dữ liệu — tải trang này từ web app (Văn phòng) để xem bản ghi gần đây. |
Ghi chú: Xe: 60A-00233. Đăng kiểm: 6 tháng/lần. Văn phòng quản lý: Văn phòng HĐND-UBND xã An Phước.
/* ========================= Hướng dẫn triển khai (README ngắn) ========================= */
/*
1. Mở Google Drive -> Tạo Google Sheet mới -> đặt tên (ví dụ: So_theo_doi_xe_60A00233_AnPhuoc)
Trong sheet đó, tạo sheet có tên: Nhat_ky_hanh_trinh
Thêm hàng tiêu đề (nếu muốn): Timestamp, Ngày sử dụng, Họ tên..., ghi theo Code.gs
Lấy ID của sheet từ URL: https://docs.google.com/spreadsheets/d/
/edit
2. Mở Google Apps Script (script.google.com) -> Tạo project mới
Thêm file Code.gs (mặc định) và dán phần Code.gs ở trên.
Tạo file Index.html (File > New > Html file) và dán phần Index.html ở trên (HTML block).
Thay thế SPREADSHEET_ID trong Code.gs bằng ID thực tế của Google Sheet.
3. Chạy 1 lần hàm saveEntry hoặc getLastEntries từ editor (Run) để xin quyền (Authorization). Chấp nhận quyền truy cập vào Google Sheet.
4. Triển khai Web App: Deploy > New deployment > Type: Web app
Description: "Web app theo dõi hành trình xe 60A-00233"
Execute as: Me (owner)
Who has access: Anyone (or Anyone with Google account) tùy chính sách của đơn vị. (Nếu chọn 'Anyone', bất kỳ ai có link đều truy cập được.)
5. Lấy URL Web App và mở. Giao diện form sẽ hiển thị. Dữ liệu gửi sẽ được lưu vào sheet.
6. Bảo mật: Nếu không muốn công khai, chọn 'Only myself' hoặc 'Anyone within ' và cấp tài khoản cần thiết. Hoặc lưu giao diện static trên máy chủ nội bộ và sử dụng google.script.run tương tự (nhưng lưu ý CORS).
7. Tùy chỉnh: bạn có thể thêm kiểm tra hợp lệ, xác thực người dùng (login bằng Google), tự động tính nhiên liệu theo định mức, tạo báo cáo tổng hợp, gửi email thông báo khi cần.
*/
0 Nhận xét