// @ts-nocheck // ISWANAH HQ LIVE CUSTOMER MONITORING // Google Apps Script Web App - TV layout: New Customers only, larger images, // walking penguin footer restored, sizing tuned for 55" TV const SHEET_ID = "11daVvYM8S3Ak7ElDueSq5Oatt-NhaN9SBbmXmqR6YNU"; const SHEET_NAME = "BranchData"; const REFRESH_SECONDS = 10; // confirmed: auto-refresh fires every 10s via setInterval below const IMAGE_IDS = { cry: "1TBuvCnhPPNooDzkPvmGB5y_UQKI0Av3w", sad: "1B4UAkj15nUf-SemeVAosPrQ6Yec_xOGr", happy: "1f2QDEpLwyF_9eYQ5fqC5mbuZXVqCoEa9", rocket: "1QaDQu_l1al6aTTw2MBb2GlCVW0NfvPOJ" }; const SOUND_ID = "1cOye-ryKJV-OMlqY4AC0-aalquzhEp8a"; const CACHE_TTL_SECONDS = 21600; function fileToDataUrl_(fileId, cachePrefix) { const cache = CacheService.getScriptCache(); const cacheKey = cachePrefix + "_" + fileId; const cached = cache.get(cacheKey); if (cached) return cached; const blob = DriveApp.getFileById(fileId).getBlob(); const dataUrl = "data:" + blob.getContentType() + ";base64," + Utilities.base64Encode(blob.getBytes()); try { cache.put(cacheKey, dataUrl, CACHE_TTL_SECONDS); } catch (error) { console.log("Cache skipped: " + error); } return dataUrl; } function getStatusImages_() { const result = {}; Object.keys(IMAGE_IDS).forEach(function (key) { result[key] = fileToDataUrl_(IMAGE_IDS[key], "image"); }); return result; } function doGet() { const images = getStatusImages_(); const sound = fileToDataUrl_(SOUND_ID, "sound"); const html = ` Iswanah HQ Customer Monitoring
LIVE

🏒 ISWANAH HQ LIVE CUSTOMER MONITORING

Loading...

πŸ†• Total New Customers

0

πŸ† Best Branch Today

-
πŸ”΄ 0 customer   |   🟑 1–2 customers   |   🟒 3–4 customers   |   πŸ”΅ 5+ customers
Keep going team! πŸ’ͺ
🐧

πŸŽ‰ NEW CUSTOMER ALERT

Customer status
`; return HtmlService.createHtmlOutput(html) .setTitle("Iswanah HQ Customer Monitoring") .setXFrameOptionsMode(HtmlService.XFrameOptionsMode.ALLOWALL); } function getBranchData() { const spreadsheet = SpreadsheetApp.openById(SHEET_ID); const sheet = spreadsheet.getSheetByName(SHEET_NAME); if (!sheet) { throw new Error('Sheet "' + SHEET_NAME + '" was not found.'); } const lastRow = sheet.getLastRow(); if (lastRow < 2) return []; const values = sheet.getRange(2, 1, lastRow - 1, 6).getValues(); return values .filter(function (row) { return String(row[0]).trim() !== ""; }) .map(function (row) { return { branch: String(row[0]).trim(), current: Number(row[1]) || 0, newCustomer: Number(row[2]) || 0, repeatCustomer: Number(row[3]) || 0, total: Number(row[4]) || 0, lastUpdated: row[5] || "" }; }); }