AutomationFlowsData & Sheets › Sync YouTube Video URLs to Google Sheets

Sync YouTube Video URLs to Google Sheets

Original n8n title: Sync Youtube Video Urls with Google Sheets

Sync Youtube Video Urls with Google Sheets. Uses splitOut, manualTrigger, googleSheets, httpRequest. Event-driven trigger; 8 nodes.

Event trigger★★★★☆ complexity8 nodesGoogle SheetsHTTP Request
Data & Sheets Trigger: Event Nodes: 8 Complexity: ★★★★☆ Added:

This workflow follows the Google Sheets → HTTP Request recipe pattern — see all workflows that pair these two integrations.

The workflow JSON

Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →

Download .json
{
  "id": "rJNvM4vU6SLUeC1d",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "name": "Sync Youtube Video Urls with Google Sheets",
  "tags": [],
  "nodes": [
    {
      "id": "f1cd1374-2214-41c1-af32-9e31e72aab88",
      "name": "Split Out",
      "type": "n8n-nodes-base.splitOut",
      "position": [
        1720,
        0
      ],
      "parameters": {
        "options": {},
        "fieldToSplitOut": "items"
      },
      "typeVersion": 1
    },
    {
      "id": "e59d5ac8-5386-4fa4-a18c-39cd84779eae",
      "name": "Manual Trigger (When Clicking 'Test workflow'",
      "type": "n8n-nodes-base.manualTrigger",
      "position": [
        1100,
        0
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "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": "https://docs.google.com/spreadsheets/d/1xoCVr_mlwn4jFcnJENtrU-_K5nkIytZ8qBXzxMq55n4/edit#gid=1592454760",
          "cachedResultName": "Sheet3"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1xoCVr_mlwn4jFcnJENtrU-_K5nkIytZ8qBXzxMq55n4",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1xoCVr_mlwn4jFcnJENtrU-_K5nkIytZ8qBXzxMq55n4/edit?usp=drivesdk",
          "cachedResultName": "Youtube Videos Comments"
        },
        "authentication": "serviceAccount"
      },
      "credentials": {
        "googleApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.5
    },
    {
      "id": "adb73854-a110-4c1e-9228-221b844a15f5",
      "name": "Get Youtube Video Urls form specific channel",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1540,
        0
      ],
      "parameters": {
        "url": "https://www.googleapis.com/youtube/v3/search",
        "options": {
          "pagination": {
            "pagination": {
              "parameters": {
                "parameters": [
                  {
                    "name": "pageToken",
                    "value": "={{ $response.body.nextPageToken }}"
                  }
                ]
              },
              "completeExpression": "={{ !$response.body.nextPageToken}}",
              "paginationCompleteWhen": "other"
            }
          }
        },
        "sendQuery": true,
        "authentication": "genericCredentialType",
        "genericAuthType": "httpQueryAuth",
        "queryParameters": {
          "parameters": [
            {
              "name": "channelId",
              "value": "={{ $json.channelId }}"
            },
            {
              "name": "part",
              "value": "snippet"
            },
            {
              "name": "order",
              "value": "date"
            },
            {
              "name": "maxResults",
              "value": "50"
            }
          ]
        }
      },
      "credentials": {
        "httpQueryAuth": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.2
    },
    {
      "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": "=https://www.youtube.com/watch?v={{ $json.id.videoId }}"
            },
            {
              "id": "40b96174-109e-4ddf-b1c2-c3f0b93a2769",
              "name": "published_at",
              "type": "string",
              "value": "={{ $json.snippet.publishedAt }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "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": "={{ $json.video_urls }}",
            "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": "https://docs.google.com/spreadsheets/d/1xoCVr_mlwn4jFcnJENtrU-_K5nkIytZ8qBXzxMq55n4/edit#gid=760258523",
          "cachedResultName": "Sheet2"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1xoCVr_mlwn4jFcnJENtrU-_K5nkIytZ8qBXzxMq55n4",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1xoCVr_mlwn4jFcnJENtrU-_K5nkIytZ8qBXzxMq55n4/edit?usp=drivesdk",
          "cachedResultName": "Youtube Videos Comments"
        },
        "authentication": "serviceAccount"
      },
      "credentials": {
        "googleApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.5
    },
    {
      "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
    },
    {
      "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](https://n8n.io/workflows/3855-youtube-comment-sentiment-analyzer-with-google-sheets-and-openai/)"
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "f874513c-62c9-430d-8c33-c6d48bacb74d",
  "connections": {
    "Split Out": {
      "main": [
        [
          {
            "node": "Format fields as required to save in google sheet",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get Youtube Channel Ids from Google Sheet": {
      "main": [
        [
          {
            "node": "Get Youtube Video Urls form specific channel",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get Youtube Video Urls form specific channel": {
      "main": [
        [
          {
            "node": "Split Out",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Manual Trigger (When Clicking 'Test workflow'": {
      "main": [
        [
          {
            "node": "Get Youtube Channel Ids from Google Sheet",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Format fields as required to save in google sheet": {
      "main": [
        [
          {
            "node": "Insert & Update Youtube Urls in Google Sheet",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}

Credentials you'll need

Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.

Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

About this workflow

Sync Youtube Video Urls with Google Sheets. Uses splitOut, manualTrigger, googleSheets, httpRequest. Event-driven trigger; 8 nodes.

Source: https://github.com/Zie619/n8n-workflows — original creator credit. Request a take-down →

More Data & Sheets workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

Data & Sheets

This workflow acts as a junior finance research analyst for a UK boutique M&A or corporate finance team. It listens for Slack messages, classifies the request, gathers company or market data, and prod

HTTP Request, Google Drive, Google Docs +5
Data & Sheets

This workflow syncs Toggl Track time entries to Google Sheets and creates monthly tabs automatically.

HTTP Request, Google Sheets
Data & Sheets

This template demonstrates how to build a low-code, AI-powered data analysis workflow in n8n. It enables you to connect to various data sources (such as MySQL, Google Sheets, or local files), process

MySQL, Google Sheets, Read Write File +2
Data & Sheets

This workflow provides a structured way to extract Meta Ads performance data and store it in Google Sheets for reporting, dashboarding, or further analysis.

Google Sheets, HTTP Request
Data & Sheets

AI Money Tracker Chatbot. Uses telegramTrigger, postgres, googleSheets, telegram. Event-driven trigger; 24 nodes.

Telegram Trigger, Postgres, Google Sheets +2