我正在编写一个独立的Google Apps脚本,该脚本将查询Youtube Reports API并返回我的视频分析。
当我在Apps脚本中使用我们用于管理各种Youtube渠道的Google+信息页进行身份验证时,Apps脚本会一直要求我授权该脚本进行离线访问。
当我在我的个人Gmail帐户的新脚本项目中尝试相同的事情时,一切正常。但是这样做会有问题。当我通过自己的帐户查询Youtube.Channels.list时,我没有获得我拥有的任何其他频道的列表,只有我自己的个人频道。
我也尝试使用Youtube文档中的try it功能和Google+信息页,并且工作正常。
对于此脚本,我打开了以下高级服务&在Google Developer Console中启用:
我还尝试将频道ID专门设置为频道== xxx并删除变量MyChannels和频道,我仍然得到相同的结果。
什么是可能的解决方案?
以下是我的代码示例:
function youTubeAnalytics() {
var myChannels = YouTube.Channels.list('id', {mine: true});
var channel = myChannels.items[0];
var channelId = channel.id;
var analyticsResponse = YouTubeAnalytics.Reports.query(
'channel==' + channelId,
'estimatedMinutesWatched,views,likes,subscribersGained',
{dimensions: 'video','max-results': '200',sort: '-views'});
}
答案 0 :(得分:1)
在Channel Reports documentation中说:
授权请求的用户必须是频道的所有者
如果您的Apps脚本未由渠道所有者(即渠道经理)运营,则会出现此问题。换句话说,如果您的Apps脚本是使用您的Google帐户编写的,该帐户也被用作YouTube频道所有者,那么您就可以了,否则您会遇到身份验证问题。
我已经记录的解决方案是Using Google Apps Script to proxy YouTube Analytics Channel Reports,它提供了更多有关此内容的详细信息。
可能造成问题的另一个因素是您的YouTubeAnalytics查询缺失start-date
和end-date
- Report: Query documentation表示这些是必需参数。要解决此问题,您的功能可以重写为:
function youTubeAnalytics() {
var myChannels = YouTube.Channels.list('id', {mine: true});
var channel = myChannels.items[0];
var channelId = channel.id;
var analyticsResponse = YouTubeAnalytics.Reports.query(
'channel==' + channelId,
'2010-01-01',
Utilities.formatDate(new Date(), 'GMT', 'yyyy-MM-dd'),
'estimatedMinutesWatched,views,likes,subscribersGained',
{dimensions: 'video','max-results': '200',sort: '-views'});
Logger.log(analyticsResponse);
}
答案 1 :(得分:0)