This workflow turns your Google Sheet into a fully automated AI video factory powered by Google Veo 3 via Vertex AI. Simply fill in your prompts, choose your video settings, tick a checkbox — and walk away. The workflow handles everything: sending the prompt to Veo 3, waiting for the video to generate, downloading it, uploading it to Google Drive, and writing the link back to your sheet automatically.
No manual downloading. No checking APIs. No copy-pasting links. Just tick and go.
Whether you need 5 videos or 500, this workflow runs each one through the same reliable pipeline — with full error handling so you always know what succeeded and what failed, and exactly why.
Google Veo 3 is one of the most powerful AI video generation models in the world — but the Google Cloud console only lets you generate videos one at a time. If you have a client who needs 50 product videos, or a content team producing videos at scale, doing it manually through the UI is completely impractical.
This workflow solves that. It gives you a spreadsheet-driven production pipeline for Veo 3 — where each row is one video job, fully configurable with its own prompt, resolution, aspect ratio, and duration.
Use this ready-made Google Sheet template to get started immediately:
👉 Click here to open the Google Sheet Template (File → Make a copy)
Your sheet must have these columns in this exact order:
| Column | Description |
|---|---|
prompt |
Your video description — what Veo 3 should generate |
resolution |
Video quality: 720p or 1080p |
aspectRatio |
16:9 for landscape, 9:16 for portrait/vertical |
durationSeconds |
Video length: 4, 6, or 8 seconds only |
send_for_generation |
Checkbox column — tick this to trigger the workflow |
video_drive_link |
Auto-filled — Drive link on success, error reason on failure |
row_number |
Auto-filled by Apps Script — do not edit manually |
veo-automation) → click Createproject-xxxxxxx-xxxx-xxxx-ada or similarIn n8n you need two Google credential connections:
Google Sheets OAuth2
Google Drive OAuth2
Open the Data Collection node in n8n and update these values:
| Field | What to put |
|---|---|
project_id |
Your Google Cloud Project ID from Step 3 |
vertex_api |
Your Vertex AI API Key from Step 2 |
veo_3_model |
veo-3.0-generate-preview (or newer model if available) |
api_endpoint |
Leave as us-central1-aiplatform.googleapis.com |
region |
Leave as us-central1 |
Veo Generated Videos)https://drive.google.com/drive/folders/xxxxxxxxxxxxxx-xxxxxxxxxxxxxxxxxxxx-xxxxxxxxxVEO_3Here is the full rewritten section in clean markdown without any code blocks around the URL:
This is what connects your Google Sheet checkbox to n8n. Without this, ticking the checkbox does nothing.
📄 Download the Apps Script file here
How to install it:
Now add the installable trigger — this step is critical:
⚠️ Why the installable trigger is required: The basic onEdit function that Google runs automatically does NOT have permission to make external HTTP requests. The installable trigger runs under your Google account permissions and can call external URLs like your n8n webhook. This is a Google limitation — not an n8n one.
Google Sheet checkbox ticked
↓
Apps Script fires webhook → n8n
↓
Validation Gate (If node)
— checks prompt, resolution, aspectRatio are all filled
— if anything missing → workflow stops, no API call made
↓
Data Collection node
— bundles all settings into one clean item
↓
Vertex AI — Send for Generation
— POST to predictLongRunning endpoint
— returns an operation name (like a tracking number)
↓
Wait 60 seconds
↓
Fetch / Check Video
— POST to fetchPredictOperation
— checks if done: true
↓
IF raiMediaFilteredCount === 0
→ TRUE: video exists
→ Convert Base64 to MP4 file
→ Upload to Google Drive
→ Write Drive link to sheet ✅
→ FALSE: check for error
→ IF raiMediaFilteredCount > 0 OR error exists
→ Write error reason to sheet ❌
→ ELSE: still processing
→ Wait 60 seconds → check again ⏳
⚙️ Video Settings Reference
Resolution
720p — standard quality, faster, lower cost
1080p — high quality, uses more credits
Aspect Ratio
16:9 — landscape (YouTube, ads, presentations)
9:16 — vertical (Instagram Reels, TikTok, YouTube Shorts)
Duration
4, 6, or 8 seconds — Veo 3 only accepts these exact values, no other numbers
If a video fails, the exact reason is written to the video_drive_link column:
Prompt violates Veo safety policy,| Full AI reason from Google ||
This means your client can see exactly which rows failed and why — without needing to check any logs.
720p to test — switch to 1080p for final production runs9:16 for Instagram Reels, TikTok, YouTube Shorts16:9 for YouTube, presentations, ads