我正在尝试将Google云端硬盘中的文件列表导入YouTube。元数据和文件的URL位于Google电子表格中,因此我使用Google Apps脚本编写了一些代码来执行以下操作
DriveApp.getFileById
YouTube.Videos.insert
上传看起来像这样
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和onBehalfOfContentOwnerChannel):
注意:此参数仅适用于YouTube内容合作伙伴。
答案 0 :(得分:3)
我的项目遇到了同样的问题,这就是我的想法:如果你的视频文件大小超过 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://stackoverflow.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