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

如何为Google Apps Script的YouTube搜索脚本添加播放量和订阅数?

为YouTube搜索脚本添加播放量与频道订阅数功能

原代码仅能获取视频基础信息,要补充播放量和频道订阅数,需调用YouTube Data API的YouTube.Videos.list(获取视频统计数据)和YouTube.Channels.list(获取频道统计数据)接口。以下是修改后的完整代码:

function youTubeSearchResults() {
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  const values = sheet.getRange("A2:A" + sheet.getLastRow()).getValues();
  
  // 先收集所有搜索结果,再统一获取统计数据,减少API调用次数
  const allSearchItems = values.flatMap(([keywords]) => {
    const searchResults = YouTube.Search.list("id, snippet", {
      q: keywords,
      maxResults: 10,
      type: "video",
      videoDuration: "short",
      order: "date" // 移除重复的order参数,保留按日期排序
    });
    return searchResults.items
      .filter(sr => sr.id.kind === "youtube#video")
      .map(sr => ({
        keywords,
        videoId: sr.id.videoId,
        videoUrl: `https://www.youtube.com/watch?v=${sr.id.videoId}`,
        title: sr.snippet.title,
        publishedAt: sr.snippet.publishedAt,
        channelTitle: sr.snippet.channelTitle,
        channelId: sr.snippet.channelId,
        channelUrl: `https://www.youtube.com/channel/${sr.snippet.channelId}`,
        thumbnailUrl: sr.snippet.thumbnails.high.url
      }));
  });

  // 批量获取视频播放量
  const videoIds = allSearchItems.map(item => item.videoId);
  const videoStats = YouTube.Videos.list("statistics", { id: videoIds.join(",") }).items;
  const videoStatsMap = {};
  videoStats.forEach(vid => {
    videoStatsMap[vid.id] = vid.statistics.viewCount || 0;
  });

  // 批量获取频道订阅数(先去重频道ID,减少无效请求)
  const channelIds = [...new Set(allSearchItems.map(item => item.channelId))];
  const channelStats = YouTube.Channels.list("statistics", { id: channelIds.join(",") }).items;
  const channelStatsMap = {};
  channelStats.forEach(chan => {
    channelStatsMap[chan.id] = chan.statistics.subscriberCount || 0;
  });

  // 组装最终结果,新增播放量和订阅数字段
  const modifyResults = allSearchItems.map(item => [
    item.keywords,
    item.videoId,
    item.videoUrl,
    item.title,
    item.publishedAt,
    item.channelTitle,
    item.channelId,
    item.channelUrl,
    item.thumbnailUrl,
    videoStatsMap[item.videoId], // 视频播放量
    channelStatsMap[item.channelId] // 频道订阅数
  ]);

  // 写入表格,注意列数新增两列
  sheet.getRange(2, 2, modifyResults.length, modifyResults[0].length).setValues(modifyResults);
}

关键改动说明:

  1. 批量API调用:先收集所有需要查询的视频ID和频道ID,一次性调用接口获取统计数据,避免循环调用触发API配额限制。
  2. 结果映射存储:将视频和频道的统计数据存入对象,方便快速匹配到对应的搜索结果。
  3. 扩展输出字段:在最终结果数组中新增了播放量(第10列)和频道订阅数(第11列)两个字段。

注意事项:

  • 需在脚本编辑器的「资源」→「高级Google服务」中启用YouTube Data API v3。
  • YouTube Data API有调用配额限制,批量请求能有效降低配额消耗。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 19:01:13