๐Ÿ’ฐ FinanceFlow

Personal Finance Intelligence Dashboard

No sheet? Use demo@example.com / demo123

Loading your financial dataโ€ฆ
๐Ÿ’ณ Transactions 0 rows
DateDescriptionCategoryIncomeExpenseCharityOther
Click Save to Google Sheet to write your changes directly into the connected Google Sheet (requires Apps Script setup in Settings).

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

Used to read data into the dashboard. Sheet must be shared as "Anyone with the link โ†’ Viewer".

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

Used to write data from My Data back into your Google Sheet. Follow the setup steps below, then paste your Web App URL here.

๐Ÿ› ๏ธ How to Set Up Google Apps Script (One-Time Setup)

Step 1 โ€” Open your Google Sheet

Open the Google Sheet that is connected to this dashboard.

Step 2 โ€” Open Apps Script editor

  1. Click Extensions in the top menu
  2. Click Apps Script
  3. A new tab opens with a code editor

Step 3 โ€” Paste the script

Delete everything in the editor and paste this exact code:

function doPost(e) {
  try {
    var ss = SpreadsheetApp.getActiveSpreadsheet();
    var params = JSON.parse(e.postData.contents);
    var action = params.action;
    var tab    = params.tab;
    var rows   = params.rows;

    var sheet = ss.getSheetByName(tab);
    if (!sheet) {
      return jsonResponse({ status: 'error', message: 'Tab not found: ' + tab });
    }

    if (action === 'replace') {
      // Keep header row, clear data rows, write new data
      var lastRow = sheet.getLastRow();
      if (lastRow > 1) sheet.deleteRows(2, lastRow - 1);
      if (rows && rows.length > 0) {
        sheet.getRange(2, 1, rows.length, rows[0].length).setValues(rows);
      }
    }

    return jsonResponse({ status: 'success', tab: tab, rowsWritten: rows ? rows.length : 0 });
  } catch(err) {
    return jsonResponse({ status: 'error', message: err.message });
  }
}

function doGet(e) {
  return jsonResponse({ status: 'ok', message: 'FinanceFlow Apps Script is running.' });
}

function jsonResponse(obj) {
  return ContentService
    .createTextOutput(JSON.stringify(obj))
    .setMimeType(ContentService.MimeType.JSON);
}

Step 4 โ€” Deploy as Web App

  1. Click the Deploy button (top right) โ†’ New deployment
  2. Click the gear icon โš™๏ธ next to "Select type" โ†’ choose Web app
  3. Set Execute as โ†’ Me
  4. Set Who has access โ†’ Anyone
  5. Click Deploy
  6. Click Authorize access and follow the prompts
  7. Copy the Web app URL shown

Step 5 โ€” Paste the URL above

Paste the Web App URL into the Google Apps Script field above and click Save. The URL looks like:
https://script.google.com/macros/s/AKfy.../exec

โš ๏ธ Every time you modify the script you must create a New Deployment โ€” redeploying does not update the URL.

๐Ÿ’ฑ Display Settings

๐Ÿ”‘ License

Enter the license code provided to you. Your login email is used to validate the license.

Valid Until: โ€”

๐Ÿ—‘๏ธ Reset