如何为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); }
关键改动说明:
- 批量API调用:先收集所有需要查询的视频ID和频道ID,一次性调用接口获取统计数据,避免循环调用触发API配额限制。
- 结果映射存储:将视频和频道的统计数据存入对象,方便快速匹配到对应的搜索结果。
- 扩展输出字段:在最终结果数组中新增了播放量(第10列)和频道订阅数(第11列)两个字段。
注意事项:
- 需在脚本编辑器的「资源」→「高级Google服务」中启用YouTube Data API v3。
- YouTube Data API有调用配额限制,批量请求能有效降低配额消耗。
内容的提问来源于stack exchange,提问作者tamey
相关产品推荐
相关产品推荐

