YouTube Data API视频上传成功但无法设置为公开问题求助
问题排查方案
1. 检查Google Cloud项目的YouTube Data API审核状态
这是该场景下最常见的问题原因:未通过官方公开审核的YouTube Data API项目,所有上传的视频都会被系统强制设置为私有状态,哪怕代码中明确指定privacyStatus: "public"也不会生效。你需要进入Google Cloud控制台的YouTube Data API管理页,提交公开使用申请,填写对应的使用场景,等待官方审核通过后即可正常设置视频公开。2. 确认授权权限范围是否完整
你当前的Apps Script项目授权的OAuth权限可能仅包含上传权限,缺少修改视频隐私状态的权限。你可以在项目的appsscript.json清单文件中显式声明完整的YouTube操作权限:
保存后重新给项目授权即可。"oauthScopes": ["https://www.googleapis.com/auth/youtube"]3. 增加错误捕获逻辑确认接口响应
你当前的代码没有错误捕获逻辑,无法确认status字段是否被API正确接收,可能存在字段不生效的警告但你未收到提示。可以调整上传部分的代码,打印接口返回的完整信息排查问题:try { const uploadResponse = YouTube.Videos.insert(requestBody, "snippet,status", blob); Logger.log("接口返回结果:" + JSON.stringify(uploadResponse)); // 可以直接查看返回结果里的status.privacyStatus字段是否为你设置的public } catch (err) { Logger.log("调用接口出错:" + err.message); }4. 检查账号权限和视频审核状态
- 确认你用于调用API的Google账号是目标YouTube频道的所有者/管理员,拥有修改视频公开状态的权限
- 新上传的视频可能正处于YouTube的合规审核、版权检测阶段,审核完成前会暂时保持私有状态,等待审核结束后会自动切换为你设置的公开状态
5. 修正代码笔误(如果存在)
你提供的代码里存在变量名笔误:定义的变量是controll,判断条件里写的是contoll(少了一个字母r),如果实际运行的代码也存在该问题,会导致文件匹配失败。你提到视频可以正常上传,可能是粘贴代码时的手误,建议确认下实际代码的变量名是否一致。
内容的提问来源于stack exchange,提问作者Thyus Libero
相关产品推荐
相关产品推荐

