On a schedule
Log daily closing prices for your tickers
Each weekday the closing prices for your watch list are logged, with a short note on the big movers.
- Runs
- On a schedule
- Apps
- Google Sheets
- AI
- Yes, uses the built-in AI allowance
- Access
- read+write
Send this to your assistant
Create a ClickRuntime automation: every weekday at 6pm, log closing prices for the tickers in my Watchlist sheet and email me a short summary of anything that moved more than 3%.
First time? Adding ClickRuntime to your assistant takes about two minutes.
Why use it
Why teams use this automation
A part-time investor keeps a watch-list of fifteen tickers in a Google Sheet. To follow them she opens a quote site each day, copies the prices one by one into the sheet, and tries to remember what the news said. When she misses a week the log has gaps, so the price history she wanted for a chart is incomplete, and she never quite works out why a position moved.
Each day, ClickRuntime reads the tickers from your sheet, fetches the latest prices from a public quote source, and adds a row for each one with the date and price. ClickRuntime's built-in AI then writes a short summary of the biggest moves, and the digest is emailed to you.
Individual investors, finance students and small trading clubs use it for a lightweight record of their watch-list.
What you get out of it
A complete price history
A row per ticker per day builds a record without gaps. Charting a position over six months works because every day is there, not just the days you remembered. Charts and return calculations then rest on solid data.
The big moves are highlighted
The summary points to the tickers that moved most and by how much. You see what needs attention in seconds and can skip the rest of the list. Quiet days need only a glance at the email.
No manual copying of prices
Copying fifteen numbers by hand is slow and invites typos. The sheet fills itself, and the values come straight from the source. Your attention stays on decisions, not data entry, and errors in the log become much less likely.
Add a ticker with one new row
The watch-list is just a column in the sheet. Adding a company to follow means typing its symbol, and it is included from the next run. Dropping one works the same way, with no setup.
Your data stays in your own sheet
The log lives in a spreadsheet you control, so you can chart it, calculate returns or share it with a friend. You are not locked into a platform that holds your history.
How it works
What happens, step by step
Every weekday ClickRuntime reads the stock tickers in your Google Sheet.
It fetches each one's latest price and daily change and adds a row per stock to the sheet.
AI writes a sentence or two about the biggest movers.
You get an email with that summary and the prices of the stocks that moved most.
Before it runs live
- Connect your Google Sheets account and pick the spreadsheets it may use
What you get
Build your own
Need it to work differently?
Your own rules
Conditions, thresholds, filters and exceptions, written the way you'd explain them to a colleague.
Any number of apps
One automation can read from one app and update several others. Over 248 apps are ready, and anything with an API works too.
AI where it helps
Summaries, classification, extraction and drafts use ClickRuntime's built-in AI, with no extra key.
On a schedule or on each event
Runs as often as every 5 minutes, or the moment an app sends an event, and keeps track of what it already handled.
Changes you can ask for
- Run it at a different time, more or less often, or only on weekdays
- Change what the AI looks for, or how it writes the result
- Add another app, for example also send it to Slack
- Combine it with other Google Sheets steps into one automation
Under the hood
The code that runs this automation
from google.oauth2.credentials import Credentials
from googleapiclient.discovery import build
from datetime import date
from clickruntime import on_trigger, credentials, http, ai, notify
SHEET_ID = "your-spreadsheet-id"
@on_trigger
def run(event):
sheets = build("sheets", "v4", credentials=Credentials(credentials.connection("google", "work")), cache_discovery=False).spreadsheets()
tickers = [r[0] for r in sheets.values().get(spreadsheetId=SHEET_ID, range="Watchlist!A2:A").execute().get("values", []) if r]
key = credentials.secret("FINNHUB_API_KEY")
rows, movers = [], []
for t in tickers:
q = http.get("https://finnhub.io/api/v1/quote", params={"symbol": t, "token": key}).json()
rows.append([date.today().isoformat(), t, q["c"], q["dp"]])
if abs(q["dp"]) > 3:
movers.append(f"{t}: {q['c']:.2f} ({q['dp']:+.1f}%)")
sheets.values().append(spreadsheetId=SHEET_ID, range="Prices!A:D", valueInputOption="USER_ENTERED",
body={"values": rows}).execute()
if movers:
note = ai.generate("Write two or three sentences on today's big moves:\n" + "\n".join(movers), max_output_tokens=200).text
notify.email_me(f"{len(movers)} big movers today", note + "\n\n" + "\n".join(movers))
return {"logged": len(rows), "movers": len(movers)}FAQ
Common questions
Where do the prices come from?
Does the digest tell me to buy or sell?
Can it cover crypto or non-US exchanges?
What permissions does it need?
Does it need AI?
How many runs does it use?
Can I change how it works?
Related
You might also like
Fill in company details from their websites
Each company in your sheet gets its industry, B2B or B2C, and a one-line summary from its own website.
See how it worksDraft posts from your content sheet
Each morning the next idea in your sheet becomes a draft, saved back in the row.
See how it worksDraft personal outreach emails from a list
Every contact in your sheet gets a short personalised email written into the row, ready for you to send.
See how it worksKeep exploring
Set up “Log daily closing prices for your tickers” from your assistant
Copy the prompt above, or connect your assistant first. Free plan, no credit card.