TRANSPORT MANAGEMENT OFFICE
Itahari, Sunsari, Nepal
Itahari, Sunsari, Nepal
рдХреГрдкрдпрд╛, рд▓рд╛рдИрд╕реЗрдиреНрд╕ рдирдореНрдмрд░ рд╡рд╛ рдЖрд╡реЗрджрдХ рдирдореНрдмрд░ рд╡рд╛ рдирд╛рдо рд╢реБрджреНрдзрд╕рдБрдЧ рд▓реЗрдЦреА SEARCH рдмрдЯрдирдорд╛ CLICK рдЧрд░реНрдиреБрд╣реЛрд╕реН ред
The verification registry is currently not synchronized. Use one of the secure methods below to initialize or update the identity database.
Method 1: Local Upload
Method 2: Google Sheets
ЁЯдЭ SECURE GOOGLE SYNC ENDPOINT
Sign in with your Google account to authorize secure real-time loading of private spreadsheet records using official cloud integrations.
registry.xlsm is in the public folder.| рдХреНрд░.рд╕рдВ. S.N. | рдкреВрд░рд╛ рдирд╛рдо Full Name | рдЖрд╡реЗрджрдХ рдЖрдИрдбреА Applicant ID | рд▓рд╛рдЗрд╕реЗрдиреНрд╕ рдирдВ License No | рдлреЛрди рдирдВ. Phone No | рдирднреЗрдЯрд┐рдПрдХреЛ рдорд┐рддрд┐ Not Found Date | рдХрд╛рд░реНрдп Action |
|---|---|---|---|---|---|---|
| рдХреБрдиреИ рдкрдирд┐ рд░реЗрдХрд░реНрдб рдлреЗрд▓рд╛ рдкрд░реЗрдиред (No missing license records found) | ||||||
| рдХреНрд░.рд╕рдВ. S.N. | рдкреВрд░рд╛ рдирд╛рдо Full Name | рдЖрд╡реЗрджрдХ рдЖрдЗрдбреА Applicant ID | рд▓рд╛рдЗрд╕реЗрдиреНрд╕ рдирдВ Licence No | рдлреЛрди рдирдВ. Phone No | рднреЗрдЯрд┐рдПрдХреЛ рдорд┐рддрд┐ Found Date | рдмреБрдЭрд┐рд▓рд┐рдиреЗрдХреЛ рдирд╛рдо Received By | рдХрд╛рд░реНрдп Action |
|---|---|---|---|---|---|---|---|
| рдХреБрдиреИ рдкрдирд┐ рд░реЗрдХрд░реНрдб рдлреЗрд▓рд╛ рдкрд░реЗрдиред (No found license records found) | |||||||
SECURE ADMINISTRATIVE PORTAL (рд╕реБрд░рдХреНрд╖рд┐рдд рдкреНрд░рд╡реЗрд╢ рдорд╛рд░реНрдЧ)
Enter credentials to unlock administrative data modification fields.
Active cloud spreadsheet synchronization. Modify spreadsheet records on Google Sheets and run this live sync to push updates instantly to all users.
APPLICANT ID, FULL NAME, F/H NAME, LICENSE NO, CATEGORY, CODE NO, рд░ OFFICE VISIT DAYредAuthorized data entry officers can perform searches, view, and sync registers within their credentials group.
| Staff Full Name | Username | Mobile & Post | Status | Action Controls |
|---|
Cryptographically simulated logs tracking authorization, sync operations, OTP generation, password resets, and suspicious triggers.
| Timestamp | User Account | Administrative Action | Status Output | Device/Client ID |
|---|
| Date (рдорд┐рддрд┐) | Category (рд╡рд░реНрдЧ) | Registry Count (рд░реЗрдХрд░реНрдб рд╕рдВрдЦреНрдпрд╛) | Distributed (рд╡рд┐рддрд░рдг) | Pending Delivery (рдмрд╛рдБрдХреА) |
|---|---|---|---|---|
| Select filters above and click 'Generate Report' to stream live Google Sheets records into view. | ||||
Change your own password, or administer passwords for other accounts. Adhering to secure hierarchy permissions: Super Admins can manage all users, Admins can manage data entry staff.
Optionally provide a Google Apps Script Web App URL to automatically write back newly saved RECEIVED BY (recipient name) values directly to your Google Sheet in real-time.
function doGet(e) {
return handleRequest(e);
}
function doPost(e) {
return handleRequest(e);
}
function handleRequest(e) {
var ss = null;
var spreadsheetId = "";
var applicantId = "";
var receivedBy = "";
var absoluteRow = null;
var gid = "";
if (e && e.postData && e.postData.contents) {
try {
var data = JSON.parse(e.postData.contents);
applicantId = data.applicantId || data.cleanId;
receivedBy = data.receivedBy !== undefined ? data.receivedBy : data.receiverName;
if (data.rowNumber) absoluteRow = Number(data.rowNumber);
else if (data.absoluteRow) absoluteRow = Number(data.absoluteRow);
if (data.gid) gid = String(data.gid);
if (data.spreadsheetId) spreadsheetId = String(data.spreadsheetId);
} catch(err) {}
}
if (e && e.parameter) {
if (!applicantId && e.parameter.applicantId) applicantId = e.parameter.applicantId;
if (!receivedBy && e.parameter.receivedBy) receivedBy = e.parameter.receivedBy;
if (!receivedBy && e.parameter.receiverName) receivedBy = e.parameter.receiverName;
if (!absoluteRow && e.parameter.rowNumber) absoluteRow = Number(e.parameter.rowNumber);
else if (!absoluteRow && e.parameter.absoluteRow) absoluteRow = Number(e.parameter.absoluteRow);
if (!gid && e.parameter.gid) gid = String(e.parameter.gid);
if (!spreadsheetId && e.parameter.spreadsheetId) spreadsheetId = String(e.parameter.spreadsheetId);
}
// Open the spreadsheet by ID if available, otherwise fallback to Active
if (spreadsheetId) {
try {
ss = SpreadsheetApp.openById(spreadsheetId);
} catch(err) {
ss = SpreadsheetApp.getActiveSpreadsheet();
}
} else {
ss = SpreadsheetApp.getActiveSpreadsheet();
}
var sheet = ss.getSheets()[0];
var headerRowIndex = 0; // 0-based index of header row
var headers = [];
var foundHeader = false;
// 1. Prioritize locating sheet with matching GID if passed
if (gid) {
var allSheets = ss.getSheets();
for (var k = 0; k < allSheets.length; k++) {
if (String(allSheets[k].getSheetId()) === String(gid)) {
sheet = allSheets[k];
foundHeader = true;
var lastRow = Math.min(sheet.getLastRow(), 15);
var lastCol = sheet.getLastColumn();
if (lastRow > 0 && lastCol > 0) {
var rangeValues = sheet.getRange(1, 1, lastRow, lastCol).getValues();
for (var r = 0; r < rangeValues.length; r++) {
var rowVal = rangeValues[r].map(function(c) { return String(c || '').trim().toUpperCase(); });
var appIdx = rowVal.indexOf('APPLICANT ID');
if (appIdx > -1) {
headerRowIndex = r;
headers = rowVal;
break;
}
}
}
break;
}
}
}
// 2. Fallback to scanning all sheets if GID not found or not passed
if (!foundHeader) {
var allSheets = ss.getSheets();
for (var k = 0; k < allSheets.length; k++) {
var checkSheet = allSheets[k];
var lastRow = Math.min(checkSheet.getLastRow(), 15);
var lastCol = checkSheet.getLastColumn();
if (lastRow > 0 && lastCol > 0) {
var rangeValues = checkSheet.getRange(1, 1, lastRow, lastCol).getValues();
for (var r = 0; r < rangeValues.length; r++) {
var rowVal = rangeValues[r].map(function(c) { return String(c || '').trim().toUpperCase(); });
var appIdx = rowVal.indexOf('APPLICANT ID');
if (appIdx > -1) {
sheet = checkSheet;
headerRowIndex = r;
headers = rowVal;
foundHeader = true;
break;
}
}
}
if (foundHeader) break;
}
}
if (!applicantId) {
return ContentService.createTextOutput(JSON.stringify({
status: "error",
message: "Required parameter 'applicantId' was not passed!"
})).setMimeType(ContentService.MimeType.JSON);
}
applicantId = String(applicantId).trim().toUpperCase();
receivedBy = String(receivedBy || "").trim().toUpperCase();
var updated = false;
var updateMethod = "search";
var foundRowIndex = -1;
// 1. Identify the exact row via absoluteRow/rowNumber (1-based index)
if (absoluteRow && absoluteRow > 1) {
foundRowIndex = absoluteRow;
updateMethod = "direct_row";
}
// 2. High-performance Column B search fallback if not found yet
if (foundRowIndex === -1) {
var lastRow = sheet.getLastRow();
if (lastRow > 1) {
var idValues = sheet.getRange(1, 2, lastRow, 1).getValues(); // Column B is Applicant ID
for (var i = 1; i < lastRow; i++) {
var val = String(idValues[i][0]).toUpperCase().trim();
if (val === applicantId) {
foundRowIndex = i + 1;
updateMethod = "scan_column_fallback";
break;
}
}
}
}
if (foundRowIndex > -1) {
// Row exists - update Column I (Index 9)
sheet.getRange(foundRowIndex, 9).setValue(receivedBy);
updated = true;
} else {
return ContentService.createTextOutput(JSON.stringify({
status: "error",
message: "Applicant ID not found in sheet. No new row will be created."
})).setMimeType(ContentService.MimeType.JSON);
}
return ContentService.createTextOutput(JSON.stringify({
status: "success",
method: updateMethod,
row: foundRowIndex,
sheetName: sheet.getName(),
message: "Saved successfully in row " + foundRowIndex + " of sheet '" + sheet.getName() + "'!"
})).setMimeType(ContentService.MimeType.JSON);
}
As an enterprise safety measure, shortcut block triggers prevent right-click inspect and DevTools overlays on standard views. Security Architecture Note: Client-side source obfuscation and shortcut disablers are strictly in-depth defensive layers. Absolute database security and authentication access rules are strictly validated on the secure server/endpoint APIs.
Select staff member to filter reports
Verify particulars and enter recipient name to clear misplaced status