我正在尝试将Google Cloud 端硬盘中的文件列表导入YouTube . 元数据和文件的URL位于Google电子表格中,因此我使用Google Apps脚本编写了一些代码来执行以下操作
-
获取所选行
-
检索 Headers ,说明,Google Cloud 端硬盘URL
-
通过DriveApp.getFileById从Google Cloud 端硬盘加载文件
-
使用 Headers 和说明通过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来获取目标 Channels ,以防有多个 Channels 可用 . 对于此请求,我必须允许访问我的数据,并且只在第一次调用时询问 . 我还在applications for my Google account列表中看到了该脚本 . 我认为权限还可以 .
关于如何获得有关该问题的更多信息的任何建议,或者我应该采取哪些不同的做法?
关于目标 Channels (这可能是一个不同的问题),我无法真正使用它,因为我似乎只能上传到特定 Channels ,如果我是YouTube内容合作伙伴(请参阅参数onBehalfOfContentOwner和onBehalfOfContentOwnerChannel):
注意:此参数仅适用于YouTube内容合作伙伴 .
1 回答
我在我的项目中遇到了同样的问题,这就是我的想法:如果你的视频文件大小超过 10 Mb ,你将得到
Empty response
错误 .可能(可以't say officialy because no documentation mentions it) this is happening because Google Apps Script' s
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