All submissions are securely captured, transmitted, and stored in a centralised Google Sheets backend database.
⚠ Make sure all data is accurate before submitting!
* Indicates required field
✅ Sale entry submitted and recorded in Google Sheets!
⏳ Submitting to Google Sheets, please wait...
❌ Submission failed. Please check your setup and try again.
Follow these steps once to link this form to your Superstar Daily Sales Reporting System Google Sheet — open your sheet here ↗:
Apps Script to paste (WebApp.gs):
// ================================================================
// SUPERSTAR DAILY SALES — WebApp.gs
// Column mapping (A:I) — matches SuperstarSheetFormatter:
// A=ENTRY DATE B=SALES REP C=REGION D=CUSTOMER
// E=LOCATION F=PRODUCT G=BUNDLES H=VALUE(KES)
// I=REMARKS ✅
// Data rows start at row 4
// ================================================================
function doPost(e) {
try {
var data = JSON.parse(e.postData.contents);
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("Superstar.Sales.Tracker")
|| ss.getSheetByName("Superstar Sales Tracker")
|| ss.getSheets()[0];
if (!sheet) {
return ContentService
.createTextOutput(JSON.stringify({status:"error",message:"Sheet not found."}))
.setMimeType(ContentService.MimeType.JSON);
}
var nextRow = Math.max(sheet.getLastRow() + 1, 4);
var parts = (data.entryDate || "").split("-");
var entryDate = (parts.length === 3)
? new Date(parseInt(parts[0]), parseInt(parts[1])-1, parseInt(parts[2]))
: new Date();
var bundles = Number(data.bundles) || 0;
var value = Number(data.value) || bundles * 1650;
sheet.getRange(nextRow, 1).setValue(entryDate);
sheet.getRange(nextRow, 2).setValue((data.repName || "").toUpperCase());
sheet.getRange(nextRow, 3).setValue(data.region || "");
sheet.getRange(nextRow, 4).setValue(data.custName || "");
sheet.getRange(nextRow, 5).setValue(data.location || "");
sheet.getRange(nextRow, 6).setValue((data.product || "").toUpperCase());
sheet.getRange(nextRow, 7).setValue(bundles);
sheet.getRange(nextRow, 8).setValue(value);
sheet.getRange(nextRow, 9).setValue(data.remarks || ""); // ✅ Remarks
var fillColor = (nextRow % 2 === 0) ? "#E3EDF7" : "#F8FBFF";
sheet.getRange(nextRow, 1, 1, 9).setBackground(fillColor);
sheet.getRange(nextRow, 1, 1, 9)
.setFontFamily("Arial").setFontSize(10).setFontWeight("normal")
.setFontColor("#B32C11").setVerticalAlignment("middle")
.setBorder(true,true,true,true,true,true,
"#B32C11",SpreadsheetApp.BorderStyle.SOLID);
sheet.getRange(nextRow, 1).setNumberFormat("dd/mm/yyyy").setHorizontalAlignment("left");
sheet.getRange(nextRow, 7).setHorizontalAlignment("right");
sheet.getRange(nextRow, 8).setNumberFormat("#,##0").setHorizontalAlignment("right");
sheet.setRowHeight(nextRow, 21);
SpreadsheetApp.flush();
return ContentService
.createTextOutput(JSON.stringify({status:"success",row:nextRow}))
.setMimeType(ContentService.MimeType.JSON);
} catch(err) {
return ContentService
.createTextOutput(JSON.stringify({status:"error",message:err.toString()}))
.setMimeType(ContentService.MimeType.JSON);
}
}
function doGet(e) {
return ContentService
.createTextOutput(JSON.stringify({status:"ready"}))
.setMimeType(ContentService.MimeType.JSON);
}
Column mapping (row 3 = headers, data starts row 4):
Paste your Web App URL here: