google sheets crypto & RWA tracking

Send a weekly crypto portfolio summary from Google Sheets

Pair CryptoTrackPro price formulas with a timed Apps Script email, while keeping the refresh schedule separate from the weekly report.

By Brennan Doyle·October 13, 2026·4 min read
What matters here
  1. A weekly Apps Script trigger can email a sheet’s current portfolio total and its change since the prior report.
  2. The trigger reads the values already in the sheet; it does not force CryptoTrackPro prices to refresh.
  3. A script can store the previous emailed total in script properties to calculate a week-over-week change.

A weekly email can answer one useful question without opening a portfolio sheet: has its total value moved since last week? Google Sheets can hold the holdings and totals, CryptoTrackPro can supply crypto prices, and a bound Apps Script can email the numbers on a schedule.

The important limit: the email trigger does not refresh CryptoTrackPro prices. It reports what the spreadsheet contains when the script runs. Set up and test the sheet’s price-refresh workflow separately, and treat the email as a snapshot rather than a live alert.

Build a total the script can read

Start with a Google Sheet that has a clear portfolio total in one cell. CryptoTrackPro is a Google Sheets add-on for tracking cryptocurrency portfolios. Its =cryptotrackpro("BTC-USD") formula fetches a live price without an API key, and it supports more than 10,000 cryptocurrencies and cross-currency pairs.

For each holding, calculate its value from the amount held and the price cell. Sum those position values in a summary cell. In the steps below, the example uses a tab named Summary and the total in cell B2. Replace both with the names and cell address in your own sheet. Keep the total in one consistent currency; the email will use the same units.

The free downloadable CryptoTrackPro portfolio template includes P&L tracking and conditional formatting, which can save setup time. But a script should read a stable total cell, not depend on a color, a changing range, or the visual layout of a table.

Add a weekly email function

In the spreadsheet, open its Apps Script editor and add a function like this. Replace the example email address, tab name, and cell address. The first run establishes a baseline; later runs compare the current total with the value saved after the previous successful email.

function sendWeeklyPortfolioSummary() { const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Summary"); const total = Number(sheet.getRange("B2").getValue()); const recipient = "you@example.com"; const props = PropertiesService.getScriptProperties(); const previous = props.getProperty("lastTotal"); const change = previous === null ? "No prior weekly baseline" : (total - Number(previous)).toFixed(2); const message = "Current total: " + total.toFixed(2) + "\nChange since last report: " + change; MailApp.sendEmail(recipient, "Weekly crypto portfolio summary", message); props.setProperty("lastTotal", String(total)); }

The reported change is an absolute difference in the total’s units, not a percentage. That keeps the example simple and avoids dividing by a previous value of zero. If the sheet’s total cell is blank or contains an error, fix that before relying on scheduled emails; this basic function expects a number.

Run the function once from the editor to authorize it and test that the message reaches the intended inbox. Then create a time-driven trigger for sendWeeklyPortfolioSummary, choose a weekly schedule, and pick a day and time. Apps Script may ask for permission to access the spreadsheet and send email. Keep the recipient explicit if you do not want to rely on account-email detection.

Keep price updates and reporting separate

A scheduled email does not guarantee fresh prices. CryptoTrackPro’s timed auto-refresh runs every 30 minutes on Base or every five minutes on Pro while its sidebar stays open; prices also refresh when a connected spreadsheet is reopened. The script above does none of that. If the sheet has not refreshed, the email can repeat an older total. Open the spreadsheet and check its values before treating the message as a current valuation.

Refresh limits matter too. CryptoTrackPro’s free plan includes 50 price refreshes per day; Base is $3.99 per month with 500 daily refreshes and 30-minute auto-refresh, while Pro is $11.99 per month with unlimited daily refreshes and five-minute auto-refresh. Those are price-plan limits, not a promise that a weekly Apps Script trigger will update prices. For a broader view of the trade-off, see how to match spreadsheet refresh frequency to your workflow.

Check the failure modes

Test the message after changing a holding and refreshing its price. Confirm the total cell changes, then confirm the next email reports the expected difference. If you rename the tab or move the total, update the script. If the spreadsheet uses multiple currencies, do not add unlike totals unless you have converted them consistently first.

The email exposes portfolio value in an inbox, so choose the recipient and subject with that in mind. CryptoTrackPro says it stores only user email and daily usage counts and does not read spreadsheet data. The separate Apps Script in this workflow is deliberately authorized to read the selected cell and send its value by email. Keep that distinction clear: the add-on’s privacy statement does not describe what your own script sends.

This stack suits investors who want a weekly check-in, not intraday monitoring or a trading signal. It reduces the habit of opening a sheet just to check the total, while leaving refresh timing, data quality, and access decisions in the user’s hands.

More from CryptoTrackPro News