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

调用YouTube API更新视频动态标题失败 报配额超限错误

YouTube动态标题自动更新故障排查

故障现象

为自有YouTube视频开发自动更新动态标题功能,预期实时展示视频播放量、点赞量数据,完成YouTube API配置后标题始终无法正常更新,无明确排查思路,初始实现代码如下:

function myFunction() {
  function updateTitle() {
  
  var videoID = '-------------'; // 待替换为实际视频ID
  var part = 'snippet,statistics';
  var params = {'id': videoID};
  var response = YouTube.Videos.list(part, params);
  var video = response.items[0];
  var videoViewsCount = video.statistics.viewCount;
  var videoLikeCount = video.statistics.likeCount;
  var videoTitle = 'OMG this video has ' + videoViewsCount + ' veiws and ' + videoLikeCount + ' likes!!!';
  video.snippet.title = videoTitle;
  try{
    YouTube.Videos.update(video, part);
  }catch(e){
 }
}
}

运行时抛出错误信息:

20:35:14 错误 GoogleJsonResponseException: 对youtube.videos.list的API调用失败,错误:请求无法完成,已超出API配额限制。报错位置:updateTitle.gs 第8行 updateTitle函数

故障原因&修复方案

  • 核心触发报错的直接原因是YouTube Data API v3配额耗尽:该接口默认每日配额为10000单位,其中videos.list单次调用消耗1单位,videos.update单次调用消耗50单位。若配置了分钟级的高频定时触发器(如每分钟执行1次),单日仅更新操作就会消耗72000单位配额,远超默认配额上限,必然触发超限报错。
  • 代码本身存在4处会导致功能失效的问题:
    1. 函数嵌套逻辑错误:外层myFunction仅定义了内部的updateTitle函数,没有实际调用逻辑,即使配额充足也不会执行更新操作。
    2. 异常捕获逻辑为空:try/catch块未做任何错误打印,导致出现问题时无法定位具体报错原因。
    3. 标题存在拼写错误:veiws为错误拼写,正确拼写为views。
    4. 更新接口缺失必填字段:调用videos.update接口时,snippet参数必须携带categoryId属性,缺失该字段时即使配额充足也会更新失败。

修复后可正常运行的代码

// 配置完成后将该函数绑定定时触发器即可,建议触发频率不低于1小时/次,避免配额耗尽
function updateYouTubeVideoTitle() {
  const VIDEO_ID = '替换为自身视频的实际ID';
  const VIDEO_CATEGORY_ID = '22'; // 22对应People & Blogs分类,替换为自身视频所属分类的对应ID
  try {
    const reqPart = 'snippet,statistics';
    const res = YouTube.Videos.list(reqPart, { id: VIDEO_ID });
    if (!res.items || res.items.length === 0) {
      console.log('未获取到对应视频信息,请检查视频ID配置是否正确');
      return;
    }
    const targetVideo = res.items[0];
    const currentViewCount = targetVideo.statistics.viewCount;
    const currentLikeCount = targetVideo.statistics.likeCount;
    const newTitle = `OMG this video has ${currentViewCount} views and ${currentLikeCount} likes!!!`;
    // 补全更新接口必填字段
    targetVideo.snippet.title = newTitle;
    targetVideo.snippet.categoryId = VIDEO_CATEGORY_ID;
    // 执行更新
    YouTube.Videos.update(targetVideo, reqPart);
    console.log(`标题更新成功,当前标题:${newTitle}`);
  } catch (err) {
    console.error(`执行报错:${err.message}`);
  }
}

配额使用注意事项

  • 定时触发频率不要设置过高:按1小时触发1次计算,单日消耗配额为24*(1+50)=1224单位,远低于10000的每日配额上限,不会触发超限问题。
  • 若之前配置了高频触发器,先进入Google Apps Script的触发器管理页删除多余的高频触发规则,待每日配额重置后即可用修复后的代码正常测试运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 01:45:42