๐Ÿ’ฐ Home FinanceFlow

Home Finance Intelligence Dashboard

No sheet? Use demo@example.com / demo123

Loadingโ€ฆ
๐Ÿ’ณ Transactions 0 rows
DateDescriptionCategory IncomeExpenseCharityOther
Click Save to Google Sheet to write changes directly into your sheet (requires Apps Script setup in Settings).

๐Ÿ“Š Google Sheet โ€” Read (Public URL)

Sheet must be shared as "Anyone with the link โ†’ Viewer".

โ˜๏ธ Google Apps Script โ€” Write (Two-Way Sync)

Paste your deployed Apps Script Web App URL to enable saving from My Data back to your sheet.

๐Ÿ› ๏ธ Apps Script Setup Guide

Step 1 โ€” Open Apps Script

  1. Open your Google Sheet
  2. Click Extensions โ†’ Apps Script

Step 2 โ€” Paste the script

Delete all existing code and paste:

function doPost(e) {
  try {
    var ss = SpreadsheetApp.getActiveSpreadsheet();
    var params = JSON.parse(e.postData.contents);
    var sheet = ss.getSheetByName(params.tab);
    if (!sheet) return respond({status:'error',message:'Tab not found: '+params.tab});
    if (params.action === 'replace') {
      var last = sheet.getLastRow();
      if (last > 1) sheet.deleteRows(2, last - 1);
      if (params.rows && params.rows.length > 0)
        sheet.getRange(2,1,params.rows.length,params.rows[0].length).setValues(params.rows);
    }
    return respond({status:'success',rowsWritten:params.rows?params.rows.length:0});
  } catch(err) { return respond({status:'error',message:err.message}); }
}
function doGet(e){ return respond({status:'ok'}); }
function respond(obj){
  return ContentService.createTextOutput(JSON.stringify(obj))
    .setMimeType(ContentService.MimeType.JSON);
}

Step 3 โ€” Deploy

  1. Click Deploy โ†’ New Deployment
  2. Type: Web App
  3. Execute as: Me | Access: Anyone
  4. Click Deploy โ†’ Authorize โ†’ Copy URL

โš ๏ธ Every code change needs a new deployment.

๐Ÿ’ฑ Display Settings

Expected tithe = Income ร— %
Shown on Tithes card.

๐Ÿ—‘๏ธ Reset