๐Ÿ“ข Important Updates
๐Ÿ“ข The website is currently under maintenance. All tests and notes will be uploaded soon. Please keep visiting regularly for updates!     ๐Ÿ“ เจŸੈเจธเจŸ เจ…เจชเจฒੋเจก เจ•เจฐเจจੇ เจถੁเจฐੂ เจ•เจฐ เจฆਿੱเจคੇ เจ—เจ เจนเจจ। เจฌเจนੁเจค เจธਾเจฐੇ เจŸੈเจธเจŸ เจ…เจชเจฒੋเจก เจนੋ เจšੁੱเจ•ੇ เจนเจจ เจฌਾเจ•ੀ เจฐเจนਿੰเจฆੇ เจŸੈเจธเจŸ เจตੀ เจœเจฒเจฆੀ เจ…เจชเจฒੋเจก เจนੁੰเจฆੇ เจฐเจนਿเจฃเจ—ੇ। เจŸੈเจธเจŸ เจฆੇเจฃ เจฒเจˆ เจ†เจจเจฒਾเจ‡เจจ เจŸੈเจธเจŸ เจฌเจŸเจจ เจคੇ เจ•เจฒਿੱเจ• เจ•เจฐੋ।     ๐Ÿ“ข Public notice regarding station choice by ETT 5994 candidates!     ๐Ÿ“˜ CTET Previous Year Question Papers Uploading Soon!     ✅ Provisional Selection List of 5994 ETT Cadre Out!     ๐Ÿ“… CTET December 2024 exam on 15th December 2024!     ๐Ÿ“ Master Cadre, ETT, Punjab Police & PSSSB Previous Year Papers Coming Soon!

๐Ÿ’ฐ Learn & Grow Academy — Income & Expense Tracker

Income & Expense Tracker

Loading... Please wait

๐Ÿ’ฐ Income & Expense Tracker

Total Income: ₹0
Total Expense: ₹0
Balance: ₹0
DateTypeCategoryAmountDescriptionStatusActions
code .gs function doGet(e) { const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Data"); if (e.parameter.action === "read") { const data = sheet.getDataRange().getValues(); const headers = data.shift(); const result = data.map(row => { let obj = {}; headers.forEach((h, i) => obj[h] = row[i]); return obj; }); return ContentService.createTextOutput(JSON.stringify(result)).setMimeType(ContentService.MimeType.JSON); } if (e.parameter.action === "export") { const format = e.parameter.format; const url = SpreadsheetApp.getActiveSpreadsheet().getUrl(); const exportUrl = format === "excel" ? url.replace("/edit", "/export?format=xlsx") : url.replace("/edit", "/export?format=pdf"); return HtmlService.createHtmlOutput(``); } return ContentService.createTextOutput("Invalid action."); } function doPost(e) { const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Data"); const data = JSON.parse(e.postData.contents); const entryId = data.entryId; const rowData = [data.date, data.type, data.category, data.amount, data.description, "Editable"]; if (entryId) { const values = sheet.getDataRange().getValues(); const rowIndex = values.findIndex(r => r[0] == entryId); if (rowIndex > -1 && values[rowIndex][6] === "Editable") { sheet.getRange(rowIndex + 1, 2, 1, 5).setValues([rowData.slice(1)]); } } else { const lastId = sheet.getLastRow(); sheet.appendRow([lastId, ...rowData]); } return ContentService.createTextOutput("Success").setMimeType(ContentService.MimeType.TEXT); }