function doGet() { var template = HtmlService.createTemplateFromFile('pg'); var pageData= template.evaluate() .setTitle('Order form') .setFaviconUrl('https://www.gstatic.com/images/icons/material/product/2x/apps_script_64dp.png') .setSandboxMode(HtmlService.SandboxMode.IFRAME) .addMetaTag('viewport', 'width=device-width, initial-scale=1') .setXFrameOptionsMode(HtmlService.XFrameOptionsMode.ALLOWALL) return pageData; } function getDropdownData() { const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('dd'); const data = sheet.getRange(1,1,sheet.getLastRow() ,7).getValues(); const dropdownData = { concernedPerson: [...new Set(data.slice(1).map(row => row[0]).filter(Boolean))], category: [...new Set(data.slice(1).map(row => row[1]).filter(Boolean))], outletName: [...new Set(data.slice(1).map(row => row[2]).filter(Boolean))], occasionType: [...new Set(data.slice(1).map(row => row[3]).filter(Boolean))], boxType: [...new Set(data.slice(1).map(row => row[4]).filter(Boolean))], referBy: [...new Set(data.slice(1).map(row => row[5]).filter(Boolean))], itNames: [...new Set(data.slice(1).map(row => row[6]).filter(Boolean))], }; return dropdownData; } function saveOrder(data) { const ss = SpreadsheetApp.getActiveSpreadsheet(); const itemsSheet = ss.getSheetByName('order request'); const date = new Date() const orderInfo = data.orderInfo; const orderRow = [ orderInfo.orderNumber, orderInfo.outletName, orderInfo.customerName, orderInfo.phoneNumber, orderInfo.occasionType, orderInfo.occasionDate, orderInfo.boxType, orderInfo.coupleName, orderInfo.referBy, orderInfo.concernedPerson ]; const categories = data.categories; categories.forEach(category => { category.items.forEach(item => { const itemRow = [ date, ...orderRow, category.category, category.boxNumber, category.mrp, category.fixedPrice, category.boxCode, category.categoryRemarks, item.itemName, item.quantity, item.unit, item.itemRemarks ]; itemsSheet.appendRow(itemRow); }); }); return "Order saved successfully!"; }