Skip to content

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%.

Paste it into your assistant. It tells you what it will send or change before it runs live.

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

  1. Every weekday ClickRuntime reads the stock tickers in your Google Sheet.

  2. It fetches each one's latest price and daily change and adds a row per stock to the sheet.

  3. AI writes a sentence or two about the biggest movers.

  4. 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

RunsOn a schedule
Log daily closing prices for your tickerstoday, 9:00Succeeded
Email · 2 big movers todayNVDA jumped 4.2% after earnings while TSLA fell 3.6%. NVDA: 182.40 (+4.2%) TSLA: 231.10 (-3.6%)

Build your own

Need it to work differently?

This template is a starting point. Copy the prompt and change it, or describe a different automation from scratch, with your own conditions, more apps or an AI step. Your assistant writes it, tests it and runs it on ClickRuntime.
  • 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

This is the Python script that runs each time the automation starts. Your AI assistant writes it for you when you send the prompt, and you allow each step in your assistant. To change how the automation works, describe the change to your assistant and it updates the script for you. For every function it can use, see the script reference.
daily_market_stock_digest_logged_to_a_sheet.pyexample
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?
From a public quote source that you choose, so the data depends on that source and its terms. Public prices can be delayed by some minutes and may not be suitable for trading decisions. Check the source's terms of use first.
Does the digest tell me to buy or sell?
No. It describes what moved and by how much, based on the data in the sheet, and does not give advice. Use it as a record and a prompt for your own research, or a conversation with a licensed adviser.
Can it cover crypto or non-US exchanges?
That depends on the quote source. Many public sources cover major exchanges and well-known cryptocurrencies, with symbol formats that differ by market. Tell your AI assistant which markets you follow, and it can test that prices are returned.
What permissions does it need?
read+write. Nothing else in your accounts is used.
Does it need AI?
Yes. It uses ClickRuntime's built-in AI, so you don't need an OpenAI or Anthropic key. Every plan includes a monthly AI allowance.
How many runs does it use?
One run each time it runs (on a schedule). Checks that find nothing to do and stop right away aren't counted.
Can I change how it works?
Yes. Describe the change to your AI assistant, for example a different schedule, channel or filter. It updates the automation, tests it and tells you what changed.

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.