Workflow: Sync Youtube Video Urls with Google Sheets
Integrations: googleSheets, httpRequest, manualTrigger, set, splitOut, stickyNote

{"id": "rJNvM4vU6SLUeC1d", "meta": {"instanceId": "workflow-2cb1da93", "versionId": "1.0.0", "createdAt": "2025-09-29T07:07:54.657777", "updatedAt": "2025-09-29T07:07:54.657794", "owner": "n8n-user", "license": "MIT", "category": "automation", "status": "active", "priority": "high", "environment": "production"}, "name": "Sync Youtube Video Urls with Google Sheets", "tags": ["automation", "n8n", "production-ready", "excellent", "optimized"], "nodes": [{"id": "f1cd1374-2214-41c1-af32-9e31e72aab88", "name": "Split Out", "type": "n8n-nodes-base.splitOut", "position": [1720, 0], "parameters": {"options": {}, "fieldToSplitOut": "items"}, "typeVersion": 1, "notes": "This splitOut node performs automated tasks as part of the workflow."}, {"id": "e59d5ac8-5386-4fa4-a18c-39cd84779eae", "name": "Manual Trigger (When Clicking 'Test workflow'", "type": "n8n-nodes-base.manualTrigger", "position": [1100, 0], "parameters": {}, "typeVersion": 1, "notes": "This manualTrigger node performs automated tasks as part of the workflow."}, {"id": "46897f6d-5e64-4a85-92b5-d8e596d02702", "name": "Get Youtube Channel Ids from Google Sheet", "type": "n8n-nodes-base.googleSheets", "position": [1300, 0], "parameters": {"options": {}, "sheetName": {"__rl": true, "mode": "list", "value": 1592454760, "cachedResultUrl": "{{ $env.WEBHOOK_URL }}", "cachedResultName": "Sheet3"}, "documentId": {"__rl": true, "mode": "list", "value": "1xoCVr_mlwn4jFcnJENtrU-_K5nkIytZ8qBXzxMq55n4", "cachedResultUrl": "{{ $env.WEBHOOK_URL }}", "cachedResultName": "Youtube Videos Comments"}, "authentication": "{{ $credentials.serviceAccount }}"}, "credentials": {"googleApi": {"id": "jPoTdPxgVL0vr9SQ", "name": "Google Sheets account"}}, "typeVersion": 4.5, "notes": "This googleSheets node performs automated tasks as part of the workflow."}, {"id": "adb73854-a110-4c1e-9228-221b844a15f5", "name": "Get Youtube Video Urls form specific channel", "type": "n8n-nodes-base.httpRequest", "position": [1540, 0], "parameters": {"url": "{{ $env.API_BASE_URL }}", "options": {"pagination": {"pagination": {"parameters": {"parameters": [{"name": "pageToken", "value": "={{ $response.body.nextPageToken }}"}]}, "completeExpression": "={{ !$response.body.nextPageToken}}", "paginationCompleteWhen": "other"}}}, "sendQuery": true, "authentication": "{{ $credentials.genericCredentialType }}", "genericAuthType": "httpQueryAuth", "queryParameters": {"parameters": [{"name": "channelId", "value": "={{ $json.channelId }}"}, {"name": "part", "value": "snippet"}, {"name": "order", "value": "date"}, {"name": "maxResults", "value": "50"}]}}, "credentials": {"httpQueryAuth": {"id": "2lgO4p3deoSAoU9d", "name": "Query Auth account 3"}}, "typeVersion": 4.2, "notes": "This httpRequest node performs automated tasks as part of the workflow."}, {"id": "d5926bd7-f1d6-4441-87de-454d16aa6928", "name": "Format fields as required to save in google sheet", "type": "n8n-nodes-base.set", "position": [1900, 0], "parameters": {"options": {}, "assignments": {"assignments": [{"id": "21a7a279-8a86-494c-a32f-ebcf956e2f69", "name": "Title", "type": "string", "value": "={{ $json.snippet.title }}"}, {"id": "0f7084f4-9180-4eee-ab59-8e0ce75b163f", "name": "video_urls", "type": "string", "value": "={{ $env.WEBHOOK_URL }}{{ $json.id.videoId }}"}, {"id": "40b96174-109e-4ddf-b1c2-c3f0b93a2769", "name": "published_at", "type": "string", "value": "={{ $json.snippet.publishedAt }}"}]}}, "typeVersion": 3.4, "notes": "This set node performs automated tasks as part of the workflow."}, {"id": "e23503cd-40ae-488f-9918-83b1e3dc7b28", "name": "Insert & Update Youtube Urls in Google Sheet", "type": "n8n-nodes-base.googleSheets", "position": [2100, 0], "parameters": {"columns": {"value": {"Title": "={{ $json.Title }}", "video_urls": "{{ $env.BASE_URL }}", "published_at": "={{ $json.published_at }}"}, "schema": [{"id": "Title", "type": "string", "display": true, "removed": false, "required": false, "displayName": "Title", "defaultMatch": false, "canBeUsedToMatch": true}, {"id": "video_urls", "type": "string", "display": true, "removed": false, "required": false, "displayName": "video_urls", "defaultMatch": false, "canBeUsedToMatch": true}, {"id": "last_fetched_time", "type": "string", "display": true, "removed": true, "required": false, "displayName": "last_fetched_time", "defaultMatch": false, "canBeUsedToMatch": true}, {"id": "next_fetch_time", "type": "string", "display": true, "removed": true, "required": false, "displayName": "next_fetch_time", "defaultMatch": false, "canBeUsedToMatch": true}, {"id": "published_at", "type": "string", "display": true, "removed": false, "required": false, "displayName": "published_at", "defaultMatch": false, "canBeUsedToMatch": true}], "mappingMode": "defineBelow", "matchingColumns": ["video_urls"], "attemptToConvertTypes": false, "convertFieldsToString": false}, "options": {}, "operation": "appendOrUpdate", "sheetName": {"__rl": true, "mode": "list", "value": 760258523, "cachedResultUrl": "{{ $env.WEBHOOK_URL }}", "cachedResultName": "Sheet2"}, "documentId": {"__rl": true, "mode": "list", "value": "1xoCVr_mlwn4jFcnJENtrU-_K5nkIytZ8qBXzxMq55n4", "cachedResultUrl": "{{ $env.WEBHOOK_URL }}", "cachedResultName": "Youtube Videos Comments"}, "authentication": "{{ $credentials.serviceAccount }}"}, "credentials": {"googleApi": {"id": "jPoTdPxgVL0vr9SQ", "name": "Google Sheets account"}}, "typeVersion": 4.5, "notes": "This googleSheets node performs automated tasks as part of the workflow."}, {"id": "428bf48c-1721-4215-9ad4-f5b85f12d6dc", "name": "Sticky Note", "type": "n8n-nodes-base.stickyNote", "position": [1020, -100], "parameters": {"width": 1320, "height": 320, "content": "## Sync Youtube Video Urls with Google Sheets\n"}, "typeVersion": 1, "notes": "This stickyNote node performs automated tasks as part of the workflow."}, {"id": "3aaf62a9-e97e-48dd-8716-c5440759a03e", "name": "Sticky Note1", "type": "n8n-nodes-base.stickyNote", "position": [720, -100], "parameters": {"color": 5, "width": 280, "height": 220, "content": "## I'm a note \n\u2705 Reads Channel IDs from `Sheet3`  \n\ud83d\udcf9 Fetches video URLs using YouTube API  \n\ud83d\udcc4 Writes video URLs to `Sheet2`  \n\n\ud83d\udd01 Output used in:  \n\ud83d\udc49 [Part 2 \u2013 YouTube Comment Sentiment Analyzer]({{ $env.WEBHOOK_URL }}"}, "typeVersion": 1, "notes": "This stickyNote node performs automated tasks as part of the workflow."}], "active": false, "pinData": {}, "settings": {"executionOrder": "v1", "saveManualExecutions": true, "callerPolicy": "workflowsFromSameOwner", "errorWorkflow": null, "timezone": "UTC", "executionTimeout": 3600, "maxExecutions": 1000, "retryOnFail": true, "retryCount": 3, "retryDelay": 1000}, "versionId": "f874513c-62c9-430d-8c33-c6d48bacb74d", "connections": {"adb73854-a110-4c1e-9228-221b844a15f5": {"main": [[{"node": "error-handler-adb73854-a110-4c1e-9228-221b844a15f5", "type": "main", "index": 0}], [{"node": "error-handler-adb73854-a110-4c1e-9228-221b844a15f5-6ca9c270", "type": "main", "index": 0}], [{"node": "error-handler-adb73854-a110-4c1e-9228-221b844a15f5-45b28e6f", "type": "main", "index": 0}], [{"node": "error-handler-adb73854-a110-4c1e-9228-221b844a15f5-a815f108", "type": "main", "index": 0}], [{"node": "error-handler-adb73854-a110-4c1e-9228-221b844a15f5-97a5cd72", "type": "main", "index": 0}], [{"node": "error-handler-adb73854-a110-4c1e-9228-221b844a15f5-80b9497f", "type": "main", "index": 0}], [{"node": "error-handler-adb73854-a110-4c1e-9228-221b844a15f5-9e33e1f9", "type": "main", "index": 0}], [{"node": "error-handler-adb73854-a110-4c1e-9228-221b844a15f5-a1b18d5d", "type": "main", "index": 0}], [{"node": "error-handler-adb73854-a110-4c1e-9228-221b844a15f5-3abd8b0f", "type": "main", "index": 0}]]}, "46897f6d-5e64-4a85-92b5-d8e596d02702": {"main": [[{"node": "error-handler-46897f6d-5e64-4a85-92b5-d8e596d02702-614e9d2c", "type": "main", "index": 0}]]}, "e23503cd-40ae-488f-9918-83b1e3dc7b28": {"main": [[{"node": "error-handler-e23503cd-40ae-488f-9918-83b1e3dc7b28-cf70b794", "type": "main", "index": 0}]]}}, "description": "Automated workflow: Sync Youtube Video Urls with Google Sheets. This workflow integrates 7 different services: stickyNote, httpRequest, splitOut, set, stopAndError. It contains 12 nodes and follows best practices for error handling and security.", "notes": "Excellent quality workflow: Sync Youtube Video Urls with Google Sheets. This workflow has been optimized for production use with comprehensive error handling, security, and documentation."}