Google Workspace账号首次通过Apps Script调用YouTube API遭遇配额超限错误求助
解决Google Workspace账号下Apps Script调用YouTube API的配额错误问题
我之前碰到过几乎一模一样的Workspace账号API配额坑,给你梳理下解决思路和细节:
核心问题根源
你的Workspace账号下的Apps Script默认绑定了组织的公用项目(就是那个northern-math-286006),这个项目的YouTube API配额要么被组织内其他用户耗尽了,要么是管理员设置了严格的配额限制,导致你调用时直接触发报错。而个人账号的Apps Script是绑定你自己的专属项目,配额独立所以没这个问题。
分步解决方案
步骤1:确认当前Apps Script绑定的GCP项目
打开你的Apps Script编辑器,点击右上角的齿轮图标进入设置,找到「Google Cloud Platform (GCP) 项目」选项,你应该能看到当前绑定的就是那个northern-math-286006项目。步骤2:创建并绑定自定义GCP项目
- 用你的Workspace账号登录GCP控制台,创建一个全新的专属项目
- 在新项目里搜索并启用「YouTube Data API v3」
- 回到Apps Script设置页面,点击「更改项目」,输入你刚创建的新项目ID完成绑定
这样你的API调用就会使用这个新项目的独立配额,和组织默认项目彻底隔离开。
步骤3:验证配额使用情况
绑定新项目后,再去查看YouTube API的配额页面,就能看到你自己的调用消耗数据了,不会再显示「No data is available」的空白内容。
顺便优化下你的代码
你的代码里有两个小细节可以修正,虽然不影响配额,但能让逻辑更准确:
function getVids() { var list = YouTube.Search.list('id,snippet', { channelId: 'UCYf_kU_HoMOUUe3hW-0ou5Q', maxResults: 25 }) // 这行完全多余,YouTube API返回的已经是可直接使用的对象,不需要JSON.parse // var json = JSON.parse(list); var items = list.items; var allVideos = []; // 循环从i=0开始,不然会漏掉第一个视频 for (var i=0; i<items.length;i++) { // 直接用items[i],不用重复写list.items[i],更简洁 var videoId = items[i].id.videoId; allVideos.push(videoId); } console.log(allVideos) }
调整后不仅代码更高效,还能确保获取到所有25个视频ID。
内容的提问来源于stack exchange,提问作者michaeldon
相关产品推荐
相关产品推荐

