Quickstart notes
Highlight price moves in Google Sheets with one extra tab
The quickstart writes the current board to a tab. Keep the previous run, compare with one lookup formula, and let conditional formatting mark the moves.
The Sheets quickstart refreshes the prematch board into an Odds tab every 15 minutes. It tells you what the prices are, not what they were. One extra tab turns it into a movement tracker: keep the previous run, compare each price with a lookup, and let conditional formatting mark what moved.
Keep the previous run
The script clears the Odds tab on every run, as the Sheets quickstart lays it out. Add one step before the clear: copy the current Odds contents into a Previous tab first. Now every refresh leaves you with two boards, the one from 15 minutes ago and the one from now, with the same columns in the same order.
Add a key column in both tabs that joins the match: home and away concatenated is enough for a watchlist. Prices alone cannot join two snapshots, because two matches can share identical prices.
One lookup per price
Next to the current prices, add a column that looks up the same match's earlier value and subtracts. In Sheets it is one formula, filled down:
=IFERROR(VLOOKUP($H2, Previous!$H:$L, 5, FALSE) - E2, "")
Here H holds the match key and the lookup returns the previous home price to compare against the current one in E. Add one column per price, each pointing at the matching previous value. A positive number means the price lengthened; negative means it dropped. Matches missing from the previous run return blank, which is what you want for newly added fixtures.
Let formatting do the shouting
A column of signed numbers is accurate and unreadable. Conditional formatting turns it into a board: one rule that paints a cell when the move passes your threshold in either direction, with the threshold living in a cell you can tune. Start wide, because prematch prices tick in small steps and a tight threshold will paint the whole sheet.
The quickstart's trigger refreshes every 15 minutes, 96 calls a day inside the free key's allowance per the pricing page, checked 2026-10-06, and that sets the resolution of your history. Moves between runs are invisible to this sheet; that is the trade for zero infrastructure.
When the sheet stops being enough
Two tabs and a lookup cover a watchlist, not a database. When you want the history of a price rather than its last two values, append each run to an archive tab with a timestamp, or move the store out of the sheet entirely. The sheet's job is to show today's board and what changed since the last run, and it does that job well.
Previous tab, one lookup, one red rule. Your spreadsheet now reads like a movement board.