无法通过 Google Apps 脚本中的 YouTube 数据 API 从云端硬盘上传:空响应
Posted
技术标签:
【中文标题】无法通过 Google Apps 脚本中的 YouTube 数据 API 从云端硬盘上传:空响应【英文标题】:Cannot upload from Drive via YouTube Data API in Google Apps Script: empty response 【发布时间】:2018-04-08 17:52:39 【问题描述】:我正在尝试将文件列表从 Google 云端硬盘导入 YouTube。元数据和文件的 URL 位于 Google 电子表格中,因此我使用 Google Apps 脚本编写了一些代码,执行以下操作
-
获取选中的行
检索标题、描述、Google Drive URL
通过
DriveApp.getFileById
从 Google Drive 加载文件
通过YouTube.Videos.insert
使用标题和说明将 blob 上传到 YouTube
使用响应中的 YouTube 视频 ID 更新所选行
上传看起来像这样
var blob = DriveApp.getFileById(id).getBlob();
var resource =
snippet:
title: 'The title',
description: 'A long description ...',
defaultLanguage: 'de',
categoryId: 17,
tags: [ 'Sport', 'Fitness' ],
,
status:
privacyStatus: 'unlisted'
try
var result = YouTube.Videos.insert(resource, "snippet,status", blob);
return result.id;
catch (err)
console.log(message: 'Error ' + err.message, error: err);
这段代码大约一年前就已经运行了。我已经稍微调整了一下,但现在我没有得到YouTube.Videos.insert
电话的回复。在 catch 中记录了以下内容:
消息:错误空响应
错误:异常:空响应
不是很有帮助。
在上传之前,我做了一个YouTube.Channels.list
在有多个可用频道的情况下获取目标频道。对于这个请求,我必须允许访问我的数据,并且我只在第一次调用时被询问。我还在applications for my Google account 的列表中看到了该脚本。我认为权限没问题。
关于如何获得有关该问题的更多信息的任何建议,或者我应该做些什么不同的事情?
关于目标频道(这可能是一个不同的问题),我不能真正使用它,因为我似乎只能上传到特定频道,如果我是 YouTube 内容合作伙伴(请参阅参数 onBehalfOfContentOwner 和 @ 987654326@):
注意:此参数仅供 YouTube 内容合作伙伴使用。
【问题讨论】:
我在 Apps 脚本问题跟踪器上提出了一个问题:#68799876 Cannot upload Blob from Drive to YouTube 【参考方案1】:我在我的项目中遇到了同样的问题,这是我的发现:如果您的视频文件大小超过 10 Mb,您将收到 Empty response
错误。
可能(不能说官方,因为没有文档提及)这是因为 Google Apps 脚本的 YouTube.Videos.insert
(以及所有其他可用的内置服务)在后台使用 UrlFetchApp
,其限制为 10 Mb每次通话:https://developers.google.com/apps-script/guides/services/quotas#current_limitations。您可以使用示例代码自行检查:如果文件小于 10 Mb,则将成功上传。
作为可能的解决方法,您可以使用此答案中的想法:https://***.com/a/44853845/555121
基本上,您需要使用SpreadsheetApp.getUi().showModalDialog
打开模态窗口,然后通过模态对话框中的纯 javascript 执行上传到 YouTube,这对传输的数据大小没有限制。以下是 YouTube 可恢复上传实现的一个很好的示例:https://github.com/sangnvus/2015SUMJS01/blob/master/WIP/Sources/FlyAwayPlus/FlyAwayPlus/Scripts/youtube-upload.js
【讨论】:
很好的答案!我没有测试您提供的解决方案,但我认为这就是原因。在 Apps Script 内部运行的原因是我想避免在客户端进行联网,所以我将把所有内容都放在一个脚本中以便在客户端外部运行。以上是关于无法通过 Google Apps 脚本中的 YouTube 数据 API 从云端硬盘上传:空响应的主要内容,如果未能解决你的问题,请参考以下文章
google Apps 脚本中的 createFile() 无法正常运行
如何通过 Google 表格中的二维数组通过 Apps 脚本插入 Big Query?