如何通过YouTube API从Google Sheet频道链接拉取频道数据
用Google Apps Script结合YouTube Data API实现频道数据拉取
第一步:提取频道ID
你的A列是频道链接,先处理不同格式的链接提取ID:
- 格式1:
https://www.youtube.com/channel/UCxxxxxx→ 直接取channel/后面的部分 - 格式2:
https://www.youtube.com/c/频道名称或https://www.youtube.com/@用户名→ 需要调用API的channels.list接口,用forUsername参数获取ID
下面是自动识别链接类型的提取函数:
function extractChannelId(url) { // 处理channel格式链接 const channelMatch = url.match(/channel\/([a-zA-Z0-9_-]+)/); if (channelMatch) return channelMatch[1]; // 处理@用户名格式链接 const atMatch = url.match(/@([a-zA-Z0-9_-]+)/); if (atMatch) { const apiKey = "你的API密钥"; // 替换成你的密钥 const response = UrlFetchApp.fetch(`https://www.googleapis.com/youtube/v3/channels?part=id&forUsername=${atMatch[1]}&key=${apiKey}`); const data = JSON.parse(response.getContentText()); if (data.items.length > 0) return data.items[0].id; } // 处理自定义c/格式链接 const cMatch = url.match(/c\/([a-zA-Z0-9_-]+)/); if (cMatch) { const apiKey = "你的API密钥"; // 替换成你的密钥 const response = UrlFetchApp.fetch(`https://www.googleapis.com/youtube/v3/channels?part=id&forUsername=${cMatch[1]}&key=${apiKey}`); const data = JSON.parse(response.getContentText()); if (data.items.length > 0) return data.items[0].id; } return "无效链接"; }
第二步:批量拉取频道统计数据
主函数会遍历A2:A的链接,提取ID后调用API获取订阅数、观看数、视频数,写入对应列:
function getChannelStats() { const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1"); const dataRange = sheet.getRange("A2:A").getValues(); const apiKey = "你的API密钥"; // 替换成你的密钥 const statsArray = []; for (let i = 0; i < dataRange.length; i++) { const url = dataRange[i][0]; if (!url) break; // 遇到空行停止 const channelId = extractChannelId(url); if (channelId === "无效链接") { statsArray.push(["无效链接", "", ""]); continue; } try { const response = UrlFetchApp.fetch(`https://www.googleapis.com/youtube/v3/channels?part=statistics&id=${channelId}&key=${apiKey}`); const data = JSON.parse(response.getContentText()); const stats = data.items[0].statistics; // 整理数据:订阅数、观看数、视频数 const subscriberCount = stats.subscriberCount || "0"; const viewCount = stats.viewCount || "0"; const videoCount = stats.videoCount || "0"; statsArray.push([subscriberCount, viewCount, videoCount]); } catch (e) { statsArray.push(["API请求失败", "", ""]); } } // 将数据写入B2:D列 if (statsArray.length > 0) { sheet.getRange(2, 2, statsArray.length, 3).setValues(statsArray); } }
操作步骤
- 打开你的Google表格,切换到Sheet1
- 点击顶部菜单栏的「扩展」→「Apps脚本」
- 删除默认的
myFunction,粘贴上面两段代码 - 把代码里的
"你的API密钥"替换成你自己的YouTube Data API密钥 - 点击脚本编辑器顶部的运行按钮,第一次运行会要求授权,按照提示完成权限验证
- 授权完成后再次运行
getChannelStats函数,等待脚本执行完成
注意事项
- YouTube Data API有配额限制(每天默认10000单位),每个
channels.list请求消耗1单位,别一次性处理上千条链接,避免配额耗尽 - 如果遇到
API请求失败,检查链接是否有效、API密钥是否正确、配额是否还有剩余 - 脚本里的空行判断是遇到第一个空行就停止,如果你有非连续的链接,可以修改逻辑
内容的提问来源于stack exchange,提问作者Bookus
相关产品推荐
相关产品推荐

