Use a Google Apps Script time-driven trigger to run a script, send the target URL to a screenshot-rendering service, and save the returned image bytes in a Drive folder. Apps Script can schedule the job and write the file; it does not render a web page into a screenshot by itself. Triggers run under the account that created them and may not fire at an exact minute.
What you need and how the workflow fits together
The implementation has three parts: a recurring Apps Script trigger, a service that renders a website as an image, and a Drive folder where the script saves that image. Google documents the trigger, HTTP-fetch, and Drive components; the code below shows how to connect them. It has not been tested as a particular provider integration, so confirm your screenshot service’s parameter names and response format before running it.
- A Google account whose owner can authorize Apps Script and write to the destination folder.
- A screenshot-rendering API that accepts an HTTP request and returns image bytes. Apps Script’s
UrlFetchAppis an HTTP client, not a browser renderer: requesting a page’s HTML does not produce a screenshot. Google’s HTTP request service is documented at UrlFetchApp. - A Drive folder ID and a recurring schedule with an acceptable timing window.
Google describes time-driven triggers as allowing scripts to execute at specific times or intervals. See installable triggers, Drive service, and the Advanced Drive service.
Choose capture settings before scheduling
Decide what the stored image should show and check that your provider supports the corresponding controls. Capture options vary by service; do not assume the example names below work with a different API.
Free tools Windows power users keep installed
One-click scans. No signup required.
#1 Best Overall
- Viewport or full page: a viewport captures the visible browser area; full-page capture can include content farther down the page.
- Dimensions and format: choose the viewport size and an output format such as PNG, JPEG, or WebP according to the provider and how you will use the files.
- Rendering delay: pages that load content asynchronously may need a wait condition or delay offered by the renderer.
- Access: a site may block automated requests, show different content by region, or require login. If authentication is needed, use only credentials and methods permitted by the site and API; handle secrets securely.
Set up Apps Script to capture and save a screenshot
1. Create a Drive folder
Create or choose the folder that should receive the images. Copy its folder ID from the folder URL. The Google account that will create the trigger must have permission to write there.
2. Add the script
In Google Apps Script, create a project and add the following code. Replace the example endpoint, API key, target URL, and folder ID with values from your chosen rendering provider and Drive folder. The endpoint contract here is illustrative: verify the provider’s required parameters and returned image format.
Rank #2
- Intuitive interface of a conventional FTP client
- Easy and Reliable FTP Site Maintenance.
- FTP Automation and Synchronization
const SCREENSHOT_ENDPOINT = 'https://YOUR-SCREENSHOT-SERVICE.example/render';
const API_KEY = 'YOUR_API_KEY';
const TARGET_URL = 'https://example.com';
const DRIVE_FOLDER_ID = 'YOUR_DRIVE_FOLDER_ID';
function captureWebsiteToDrive() {
const response = UrlFetchApp.fetch(SCREENSHOT_ENDPOINT, {
method: 'get',
headers: { Authorization: 'Bearer ' + API_KEY },
// These parameter names are provider-specific; confirm them in its docs.
payload: {
url: TARGET_URL,
full_page: 'true',
format: 'png'
},
muteHttpExceptions: true
});
const status = response.getResponseCode();
if (status < 200 || status >= 300) {
throw new Error('Screenshot service returned HTTP ' + status + ': ' + response.getContentText());
}
const image = response.getBlob();
// Set the filename extension to match the output format requested above.
image.setName('website-' + Utilities.formatDate(new Date(), Session.getScriptTimeZone(), 'yyyy-MM-dd-HH-mm-ss') + '.png');
const folder = DriveApp.getFolderById(DRIVE_FOLDER_ID);
folder.createFile(image);
}
Some providers require query parameters instead of a GET payload, a different authentication header, or an output URL rather than raw image bytes. Adapt the request and response handling to the provider’s documented API. The script assumes a successful response body is the image itself; if the provider returns JSON containing a download URL, parse that response and fetch the image separately.
3. Authorize and run once
Select captureWebsiteToDrive in the Apps Script editor and run it once. Review and grant the requested Google permissions. Check the destination folder for a correctly named image before adding a trigger. If the project explicitly declares OAuth scopes in its manifest, include the external-request scope https://www.googleapis.com/auth/script.external_request for UrlFetchApp, as described in Google’s OAuth scopes documentation.
Recommended Free Tools
Rank #3
4. Create a recurring trigger
In the Apps Script editor, open Triggers (the clock icon), choose Add Trigger, select captureWebsiteToDrive, choose Time-driven as the event source, then select the cadence and time interval. Installable time-driven triggers support schedules as often as once per minute or as infrequently as once per month. A chosen time may be randomized within an hour; Google says the selected time then remains consistent. Treat this as recurring automation, not exact-time scheduling.
The trigger executes as the account that created it. If that account loses access to the folder or its authorization is revoked, saving can fail. For shared-drive features, Google’s Advanced Drive service can provide additional functionality and may require enabling the service and its API; see Advanced Drive service setup.
Rank #4
Or skip the browser setup
ScreenshotNeo is a website screenshot API and MCP server. One request can render a URL and return an image or PDF; it still needs to be called by a scheduler such as Apps Script if you want recurring captures. Its API documentation is at ScreenshotNeo docs. For example, request a WebP image with cURL:
curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://example.com -o shot.webp
ScreenshotNeo removes cookie/consent banners, newsletter popups, and chat widgets before capture; failed loads, bot checks, blank pages, and cache hits are not billed. Its MCP server lets AI agents take screenshots. The free plan includes 1,000 screenshots per month without a card; paid plans start at $5 for 3,000. These are ScreenshotNeo’s stated plan terms, not India-specific availability or currency guidance. You can learn about ScreenshotNeo and sign up for 1,000 free screenshots a month with no card.
Troubleshoot failed or unexpected captures
- HTTP error from the screenshot service: check the endpoint, authorization header, parameter names, quota, and provider’s error body. The sample throws on non-2xx responses so failures are visible instead of silently saving an error page as an image.
- Drive permission or folder error: verify the folder ID and that the trigger creator’s account can access and create files there. Reauthorize the script if its access was revoked.
- The saved file is text or JSON, not an image: inspect the provider’s response contract. It may return a JSON job/result or image URL rather than binary image data; parse it and fetch the actual image.
- Image is blank or missing late-loaded content: use the provider’s wait-for-selector, delay, or network-idle option if available. Confirm that the chosen full-page mode is supported and that the target site allows automated access.
- Trigger runs later than the selected time: time-driven triggers are not exact-time schedulers. Choose a schedule that tolerates the documented timing window, and avoid relying on the capture as a real-time observation.
- No run appears: check the Apps Script Triggers page and execution history, confirm the trigger is enabled, and ensure the creator still has authorization and access.
Cost, reliability, and storage considerations
Apps Script schedules and Drive storage do not remove the costs or usage limits of the screenshot-rendering service. Check that service’s current limits, regional availability, and pricing directly; India-specific availability and pricing were not established here. A provider outage, a site change, blocking behavior, or an expiring login can interrupt captures. Review execution failures and periodically verify the output folder. Repeated captures also accumulate files, so choose a retention or cleanup policy that fits your Drive storage and recordkeeping needs.
Best Value
For a personal Drive folder, the built-in Drive service may be sufficient. For shared-drive operations or additional Drive capabilities, evaluate the Advanced Drive service and its setup requirements before relying on it.
Frequently Asked Questions
Can Apps Script take a website screenshot without a separate renderer?
No. UrlFetchApp makes HTTP requests but does not render a browser page. Use a screenshot API or operate browser automation that returns image bytes.
Will a time-driven trigger run at the exact minute I select?
No. Google may randomize the initial time within an hour, so allow for timing tolerance.
The Tool Desk
Outbyte PC Repair FREERepair Windows errors before they cause bigger problemsFix Now →Outbyte Driver Updater FREEFix the driver behind crashes, sound loss and screen glitchesFind Drivers →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.

