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

使用AppScript与YouTube Data API v3获取频道视频遇索引问题

解决YouTube Data API无法获取频道历史视频的问题

问题原因

你当前使用的Search API并不适用于获取频道的完整视频列表——它的结果基于YouTube的搜索索引逻辑,优先返回近期、曝光度高的内容,不会包含频道所有历史视频(比如你提到的11月视频)。要获取频道全部公开上传的视频,必须通过频道专属的上传播放列表来查询。

解决方案步骤

  1. 调用Channels API获取目标频道的「上传视频播放列表ID」
  2. 通过PlaylistItems API遍历该播放列表,按发布时间排序获取视频数据

修改后的完整脚本

var apiKey = '你的API密钥';
var channelId = 'UCAoy6rzhSf4ydcYjJw3WoVg'; 

function fetchRecentVideos() {
  // 第一步:获取频道的上传播放列表ID
  var channelUrl = 'https://www.googleapis.com/youtube/v3/channels';
  var channelParams = {
    'part': 'contentDetails',
    'channelId': channelId,
    'key': apiKey
  };
  var channelResponse = UrlFetchApp.fetch(channelUrl + '?' + encodeParams(channelParams));
  var channelResult = JSON.parse(channelResponse.getContentText());
  var uploadsPlaylistId = channelResult.items[0].contentDetails.relatedPlaylists.uploads;

  // 第二步:从上传播放列表获取视频数据
  var playlistUrl = 'https://www.googleapis.com/youtube/v3/playlistItems';
  var playlistParams = {
    'part': 'snippet',
    'playlistId': uploadsPlaylistId,
    'maxResults': 50,
    'order': 'date', // 按发布时间倒序排列
    'key': apiKey
  };

  var playlistResponse = UrlFetchApp.fetch(playlistUrl + '?' + encodeParams(playlistParams));
  var playlistResult = JSON.parse(playlistResponse.getContentText());

  // 打印视频信息
  for (var i = 0; i < playlistResult.items.length; i++) {
    var video = playlistResult.items[i].snippet;
    Logger.log('视频标题:'+ video.title);
    Logger.log('发布时间:'+ video.publishedAt);
    Logger.log('--------------------');
  }

  // 如果需要获取更早的视频(比如11月的),可以处理分页
  // if (playlistResult.nextPageToken) {
  //   playlistParams.pageToken = playlistResult.nextPageToken;
  //   // 再次调用API获取下一页数据
  // }
}

function encodeParams(params) {
  return Object.keys(params)
    .map(function (key) {
      return encodeURIComponent(key) + '=' + encodeURIComponent(params[key]);
    })
    .join('&');
}

关键说明

  • 上传播放列表:每个YouTube频道都有一个自动维护的「上传视频」播放列表,里面包含该频道所有公开上传的视频,通过Channels API的contentDetails.relatedPlaylists.uploads字段可以获取这个列表的ID。
  • 分页处理:如果要获取50条以外的更早视频(比如11月的),可以利用API返回的nextPageToken参数,循环调用PlaylistItems API,直到拿到目标时间范围内的视频。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 05:58:27