Spreadsheets are where URL lists already live: SEO audits, partner directories, QA checklists. With a small Google Apps Script function, each row's URL gets captured through the Screenshotty API and the hosted image link (or an inline =IMAGE preview) lands in the next column.
The API key stays in Script Properties — not in the sheet — so you can share the spreadsheet without sharing credentials.
function SCREENSHOT(url) {const apiKey = PropertiesService.getScriptProperties().getProperty("SCREENSHOTTY_API_KEY");const response = UrlFetchApp.fetch("https://api.screenshotty.link/api/v1/screenshot",{method: "post",contentType: "application/json",headers: { "X-Api-Key": apiKey },payload: JSON.stringify({url: url,block_cookie_banner: true,response_type: "json",}),});return JSON.parse(response.getContentText()).url;}// In the sheet: =SCREENSHOT(A2) or =IMAGE(SCREENSHOT(A2))
Call =SCREENSHOT(A2) like any formula, or run a menu action that fills the whole column.
Wrap the result in =IMAGE() to see thumbnails directly in the sheet.
Script Properties hold the API key; the sheet only ever contains output URLs.
Apps Script triggers re-run the capture column daily for spreadsheet-native monitoring.
Sheet formulas can't send authentication headers, so the key would leak into the sheet. The Apps Script wrapper keeps the key in Script Properties and exposes only a safe custom function.
Custom functions cache per input, but for big sheets prefer a menu-driven script that writes static values into the cells instead of live formulas.
Sign up at screenshotty.link (free tier: 100 screenshots/month, no credit card) and copy your key from the dashboard. Keep it in the integration's credential store rather than pasting it into shared workflows.
Yes — batch the rows in the script with Utilities.sleep between chunks to respect rate limits, and write results as values.