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

Google Sheets调用YouTube API报错:API Key与认证凭据来自不同项目如何解决

报错根因

你当前使用的Apps Script内置YouTube高级服务,默认绑定Apps Script自动生成的默认GCP项目,与你自行在云控制台开通YouTube API、生成密钥的自定义项目不属于同一个主体,两者混用会触发跨项目校验报错,此前可正常运行是因为平台校验规则未完全收紧,近期规则更新后才触发异常。

解决方案1(推荐:绑定自定义GCP项目,使用内置YouTube服务)

操作步骤如下:

  • 打开对应Google Sheets,点击「扩展程序」→「Apps Script」进入脚本编辑器
  • 点击左侧边栏的齿轮图标进入「项目设置」页面
  • 下拉找到「Google Cloud Platform (GCP) 项目」板块,点击「更改项目」按钮
  • 前往云控制台,打开你已开通YouTube API的目标项目,在首页「项目信息」卡片中复制项目编号(注意区分项目编号和项目ID)
  • 将项目编号粘贴到Apps Script的输入框中,点击「设置项目」完成绑定
  • 回到脚本编辑器,点击左侧边栏「+ 服务」,搜索并添加YouTube Data API v3服务
  • 删除原有代码中请求参数里的key: APIKey字段,内置服务会自动使用绑定项目的鉴权信息

修改后的代码示例:

let chanID = "UC...Dw"

function getDetails() {
  let info = YouTube.Channels.list("snippet, statistics", {id: chanID} )
  Logger.log(info);
}

解决方案2:无需绑定项目,直接调用公共API

如果你不想调整项目绑定配置,可直接放弃内置YouTube高级服务,用UrlFetchApp发起公共接口请求,传入你自己的API密钥即可:

let APIKey = "AIX...bQ0";
let chanID = "UC...Dw"

function getDetails() {
  const requestUrl = `https://www.googleapis.com/youtube/v3/channels?part=snippet,statistics&id=${chanID}&key=${APIKey}`;
  const response = UrlFetchApp.fetch(requestUrl);
  const info = JSON.parse(response.getContentText());
  Logger.log(info);
}

注意事项

  • 两种方案二选一即可,不要同时使用内置YouTube服务和自定义API密钥,否则会重复触发跨项目报错
  • 若采用方案1,绑定完成后需确认对应GCP项目中YouTube Data API v3处于已启用状态,且未超出配额限制

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 14:36:07