App script Chat GPT 100% working code. with some minimul errors
/* BAITHKEE BACKEND API
Google Apps Script for handling News, Views, and Reports
*/
function doGet(e) {
var action = e.parameter.action;
if (action == "getNews") return getNews(e);
if (action == "addView") return addView(e);
if (action == "report") return reportNews(e);
return ContentService.createTextOutput("Baithkee API is Live");
}
function doPost(e) {
var data = JSON.parse(e.postData.contents);
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("NEWS");
// Naya News Post karna
sheet.appendRow([
new Date().getTime(), // ID
data.headline,
data.text,
data.username,
data.photo,
data.email,
data.latitude,
data.longitude,
new Date().getTime(), // Timestamp
0, // Views
"" // Reports (storing as string to check unique users)
]);
return ContentService.createTextOutput("posted").setMimeType(ContentService.MimeType.TEXT);
}
function getNews(e) {
var userLat = parseFloat(e.parameter.lat);
var userLon = parseFloat(e.parameter.lon);
var range = parseFloat(e.parameter.range) || 5; // Default 5km
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("NEWS");
var rows = sheet.getDataRange().getValues();
var result = [];
var now = new Date().getTime();
for (var i = rows.length - 1; i > 0; i--) {
var row = rows[i];
var postTime = row[8];
var hours = (now - postTime) / 3600000;
// 1. 24 Ghante wala filter
if (hours > 24) {
sheet.deleteRow(i + 1);
continue;
}
// 2. Geolocation (Distance) wala filter
var distance = calculateDistance(userLat, userLon, row[6], row[7]);
if (distance <= range) {
result.push({
id: row[0],
headline: row[1],
text: row[2],
username: row[3],
photo: row[4],
time: postTime,
views: row[9]
});
}
}
// 3. Views ke basis par Sort karna (Ranking System)
result.sort((a, b) => b.views - a.views);
return ContentService.createTextOutput(JSON.stringify(result.slice(0, 100)))
.setMimeType(ContentService.MimeType.JSON);
}
function addView(e) {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("NEWS");
var data = sheet.getDataRange().getValues();
for (var i = 1; i < data.length; i++) {
if (data[i][0] == e.parameter.id) {
sheet.getRange(i + 1, 10).setValue(data[i][9] + 1);
break;
}
}
return ContentService.createTextOutput("viewed");
}
function reportNews(e) {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("NEWS");
var data = sheet.getDataRange().getValues();
var userEmail = e.parameter.email;
for (var i = 1; i < data.length; i++) {
if (data[i][0] == e.parameter.id) {
var reports = data[i][10] ? data[i][10].split(",") : [];
if (reports.indexOf(userEmail) == -1) {
reports.push(userEmail);
if (reports.length >= 5) {
sheet.deleteRow(i + 1); // 5 Reports par delete
} else {
sheet.getRange(i + 1, 11).setValue(reports.join(","));
}
}
break;
}
}
return ContentService.createTextOutput("reported");
}
function calculateDistance(lat1, lon1, lat2, lon2) {
var R = 6371;
var dLat = (lat2 - lat1) * Math.PI / 180;
var dLon = (lon2 - lon1) * Math.PI / 180;
var a = Math.sin(dLat/2) * Math.sin(dLat/2) + Math.cos(lat1*Math.PI/180) * Math.cos(lat2*Math.PI/180) * Math.sin(dLon/2) * Math.sin(dLon/2);
return R * (2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a)));
}