You can use Google Sheets and Google Apps Script to poll a website on a schedule, log each result, compare it with the previous check, and email an alert when a monitored value changes. This is polling, not a spreadsheet edit trigger: the script must fetch the external page itself.
How the monitoring workflow works
- List the URL and the check you want in a Google Sheet.
- Run an Apps Script function on a time-driven trigger. It requests the page or endpoint.
- Extract a result, such as the HTTP status or a specific piece of text.
- Append the result and timestamp to a history tab.
- Compare the result with the previous observation and send an alert if it meets your change or failure rule.
Apps Script can work with Sheets and external services; Google also provides programmatic access to spreadsheet data through the Sheets API. The trigger schedule, extraction logic, history format, and alert policy are choices you make for your monitoring need.
As an Amazon Associate I earn from qualifying purchases.
Choose what counts as a change
Availability
For a basic availability log, record the HTTP response status and, if useful, how long the request took. Decide which responses count as healthy for your target; a successful request does not necessarily mean the page contains the business-critical content you expect.
Quick wins for a faster PC:
Scan for outdated or missing drivers - takes under a minuteDriver Scan →Repair Windows errors before they cause bigger problemsFix Now →Fix the driver behind crashes, sound loss and screen glitchesFind Drivers →Specific page content
If you care about a price, notice, or other page value, compare a selected text fragment or extracted value rather than the full HTML response. Pages often include changing navigation, timestamps, advertisements, or other dynamic content that can create noisy alerts. The best extraction method depends on the target site and is not universal.
#1 Best Overall
- The Google Workspace Bible: [14 in 1] The Ultimate All in One Guide from Beginner to Advanced Including Gmail, Drive, Docs, Sheets, and Every Other App from the Suite
- ABIS BOOK
Failure and recovery policy
For a business-critical endpoint, decide what constitutes failure, whether one failed check or several consecutive failures should alert, and whether you want a separate recovery notification. These are operational choices; Google’s trigger and Sheets documentation does not prescribe a universal policy.
Set up scheduled checks in Apps Script
Prepare the spreadsheet
- Create a tab for configuration, with at least the target URL and the condition or value to monitor.
- Create a separate history tab with columns for timestamp, URL, observed result, and any error or response-time detail you need.
- Open the spreadsheet’s Apps Script editor and write a function that reads the configured URL, requests it, applies your chosen extraction rule, appends an observation, compares it with the previous one, and sends an alert when appropriate.
Google documents Apps Script automation and connections to external services in its Google Sheets developer hub. For an example of a simple website status check logged in Sheets with an email notification, see Spreadsheet.dev’s tutorial. Adapt any example to your target, error handling, and alert rules rather than treating status-code logging as a complete content monitor.
Rank #2
Create a time-driven trigger
- In the Apps Script editor, open Triggers and add a trigger for your monitoring function.
- Choose a time-driven event source and select an interval appropriate to the target and the consequence of a delayed alert.
- Authorize the script when prompted, and ensure the trigger owner and alert recipient are accounts your team can maintain.
- Run the function manually once and verify the history row and alert behavior before relying on the schedule.
Google describes a time-driven trigger as similar to a Unix cron job, and says it can run as frequently as every minute. That is an available interval, not a promise of exact execution time: Google notes that trigger timing can be slightly randomized. A polling alert can therefore arrive after a change, not in real time. See Google’s installable triggers documentation.
Why onEdit does not monitor a website
A simple onEdit(e) trigger runs when a user changes a value in a spreadsheet. An installable change trigger concerns changes to spreadsheet structure, such as adding a sheet or removing a column. Neither detects a change on an external website; the time-driven function must fetch that site or you must use an external monitoring service. Google documents these distinctions in its simple triggers and installable triggers guidance.
Rank #3
Ownership, permissions, and reliability
- Trigger owner: An installable trigger runs with the authorization of the account that created it. Use an account with appropriate access and a clear ownership plan.
- What starts the job: Script executions and API requests do not themselves invoke installable triggers. A spreadsheet edit or an API write is not a substitute for the scheduled monitoring trigger.
- Execution errors: Handle request failures and record them distinctly from a valid page result. Decide who receives operational error notifications, not only content-change alerts.
- Target behavior: A scheduled Apps Script run does not guarantee that a site will accept automated requests or return the same content a browser sees. Check the target’s access requirements and published terms. The behavior of any particular site under non-browser fetching, JavaScript rendering, or bot protection must be tested rather than assumed.
For Google’s explanation of trigger ownership, authorization, event types, and restrictions, consult the installable trigger guide.
When a hosted monitor is a better fit
| Approach | Setup and control | Alerting and operations | Best fit |
|---|---|---|---|
| Apps Script and Sheets | You own the script, sheet, authorization, and extraction logic. | Scheduled polling and custom logs; you maintain error handling and the workflow. | A lightweight log, a learning project, or a small number of pages. |
| Hosted monitoring service | The provider manages checks; capabilities depend on the provider and plan. | Managed alerts and an operational interface; verify check behavior, integrations, and costs with the provider. | When reliability, scale, or reduced script maintenance matters more than owning the implementation. |
Google Cloud Monitoring documents notification channels and alerting, but this does not establish it as a direct Sheets integration. Its webhook notification channels require a publicly reachable endpoint; see Google Cloud Monitoring notification options. The available evidence does not establish provider pricing, retention, check frequency, regions, or a verified direct Sheets connector, so compare those details against current provider documentation before choosing a service.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Or skip the browser setup
For a screenshot-based check, ScreenshotNeo is a website screenshot API and MCP server. Its clean-shot options accept cookie and consent banners like a visitor and remove more than 60 known consent platforms, newsletter popups, and chat widgets before capture; each step can be turned off. Only clean shots are billed: bot checks or CAPTCHAs, blank pages, timeouts, failed loads, and cache hits cost nothing, with the outcome identified in response headers. Its MCP server offers take_screenshot, get_page_info, and capture_pdf for Claude, Cursor, and other MCP clients. The API returns a screenshot or PDF; it is not a replacement for a custom text-extraction rule when your alert depends on a particular value.
Recommended Free Tools
One GET request returns an image. Install the ScreenshotNeo API documentation for parameter details and account setup, then use this cURL example, changing the target URL as needed:
curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp
ScreenshotNeo includes 1,000 screenshots per month free with no card; paid plans start at $5 for 3,000. See ScreenshotNeo and sign up for 1,000 free screenshots a month, with no card.
Troubleshoot common problems
- No scheduled rows appear: Confirm the time-driven trigger is attached to the intended function, that its creator has authorized the script, and that the spreadsheet is accessible to that account. Inspect the Apps Script execution history for failures.
- An edit does not run the external check: That is expected unless the check function is explicitly called;
onEditis a response to spreadsheet edits, not a website-change detector. Use a time-driven trigger for polling. - Alerts are late or unevenly spaced: Time-driven trigger execution time can be slightly randomized, and the job only observes a change when it runs. Do not treat the configured interval as a real-time delivery guarantee.
- The status is healthy but the page is wrong: A status-code-only check does not verify the content you care about. Extract and compare a stable, relevant value, and define what should count as a failure.
- Every check reports a change: The comparison may include dynamic content such as timestamps, navigation, or ads. Narrow the extraction to the specific content that matters.
- The script cannot retrieve the expected page: The target may behave differently for automated requests, require JavaScript rendering, or block automated clients. Test the site’s response and access requirements; do not assume Apps Script fetches will reproduce a normal browser view.
- An API write or script action does not start the monitor: Installable triggers are not invoked by script executions or API requests. Keep the time-driven trigger as the job’s scheduler.
Frequently Asked Questions
Can the monitoring script check more than one URL?
Yes, the workflow can read multiple configured URLs and process them in one scheduled function; choose a scope and schedule that your script can maintain.
Does a Sheets website check prove that a site is available to every visitor?
No. It records the result observed by that request. A site can respond differently by client, location, or browser behavior.
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
Quick Recap
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

