You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过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);
  }
}

操作步骤

  1. 打开你的Google表格,切换到Sheet1
  2. 点击顶部菜单栏的「扩展」→「Apps脚本」
  3. 删除默认的myFunction,粘贴上面两段代码
  4. 把代码里的"你的API密钥"替换成你自己的YouTube Data API密钥
  5. 点击脚本编辑器顶部的运行按钮,第一次运行会要求授权,按照提示完成权限验证
  6. 授权完成后再次运行getChannelStats函数,等待脚本执行完成

注意事项

  • YouTube Data API有配额限制(每天默认10000单位),每个channels.list请求消耗1单位,别一次性处理上千条链接,避免配额耗尽
  • 如果遇到API请求失败,检查链接是否有效、API密钥是否正确、配额是否还有剩余
  • 脚本里的空行判断是遇到第一个空行就停止,如果你有非连续的链接,可以修改逻辑

内容的提问来源于stack exchange,提问作者Bookus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 10:40:34