Google apps script 使用谷歌应用程序脚本的YouTube分析和报告API
我正在尝试将YouTube分析和报告API与Google Apps脚本一起使用,用我拥有和管理的YouTube品牌帐户的分析数据填充Google工作表 作为前言,我曾在我拥有的YouTube频道和我管理的频道上尝试过这一点,但没有任何效果。在过去的几天里,我还查看了所有与此相关的堆栈溢出问题和回答,但没有任何结果。相信我,我说我什么都试过了。我不相信代码或我的设置方式是问题所在;我相信这与谷歌或YouTube API本身有关 以下是我采取的步骤: 在Google Apps脚本中启用YouTube分析API和YouTube数据API。YouTube报告API找不到,这可能是问题所在 在Google开发者控制台中启用相同的API YouTube报告API在那里可用 设置客户端ID&Secret并将我的项目链接到应用程序脚本 通过在Google开发者控制台的YouTube Analytics and Reporting API Explorer中输入相同的精确参数、度量、维度等,验证了我的代码确实有效。当我这样做时,浏览器确实导出了正确的信息。然而,在谷歌应用程序脚本中,它根本不起作用 由于代码是在浏览器中工作的,而不是在谷歌应用程序脚本中,我相信有一些简单的事情我做错了,或者是谷歌方面的错误。我希望有办法解决这个问题,因为我真的很想把我的YouTube频道的数据放到谷歌表单上 为了简单起见,谷歌应用程序脚本代码缩短了。key属性可能不是必需的,但如果没有它也无法工作Google apps script 使用谷歌应用程序脚本的YouTube分析和报告API,google-apps-script,google-api,youtube-api,youtube-data-api,youtube-analytics-api,Google Apps Script,Google Api,Youtube Api,Youtube Data Api,Youtube Analytics Api,我正在尝试将YouTube分析和报告API与Google Apps脚本一起使用,用我拥有和管理的YouTube品牌帐户的分析数据填充Google工作表 作为前言,我曾在我拥有的YouTube频道和我管理的频道上尝试过这一点,但没有任何效果。在过去的几天里,我还查看了所有与此相关的堆栈溢出问题和回答,但没有任何结果。相信我,我说我什么都试过了。我不相信代码或我的设置方式是问题所在;我相信这与谷歌或YouTube API本身有关 以下是我采取的步骤: 在Google Apps脚本中启用YouTube
function myFunction() {
var metrics = [
'averageViewDuration'
];
var oneMonthInMillis = 1000 * 60 * 60 * 24 * 30;
var today = new Date();
var lastMonth = new Date(today.getTime() - oneMonthInMillis);
var report = YouTubeAnalytics.Reports.query({
ids: 'channel==MINE',
startDate: formatDateString(lastMonth),
endDate: formatDateString(today),
metrics: metrics.join(','),
dimensions: 'day',
sort: 'day',
includeHistoricalChannelData: false,
key: "AIzaSyAcVb-hriIydRs8iVqFZ6ZoyL8En3qLcnc",
});
Logger.log(report);
}
当我运行代码时,记录器的输出为零。我希望那里会有一些东西
作为提醒,当我选择除核心帐户之外的任何帐户时,都会发生这种情况。当我选择附加到没有YouTube频道的帐户的核心帐户时,它会输出以下内容:
[19-10-3017:58:19:251 PDT]{columnHeaders=[{columnType=DIMENSION,
dataType=STRING,name=day},{columnType=METRIC,dataType=INTEGER,
name=averageViewDuration}],kind=YouTubeAnalyticsResultable,
行=[[2019-09-30,0],[2019-10-01,0],[2019-10-02,0],[2019-10-03,
0], [2019-10-04, 0], [2019-10-05, 0], [2019-10-06, 0], [2019-10-07,
[2019-10-08,0]…]}
没有理由它不起作用。您认为问题出在哪里?抱歉,但目前您想要做的是,应用程序脚本不支持。这已经在Google Issue tracker中报道过,您可以在下面的链接中看到: 作为一种解决方法,您可以实现Oauth2.0,正如Stack Overflow的文章中所说的那样 编辑 如果在使用刷新令牌时遇到问题,请在从Oauth2.0获取访问令牌后,使用此代码直接向Youtube API发出请求
function makeRequest() {
var response = UrlFetchApp.fetch('https://youtubeanalytics.googleapis.com/v2/reports?endDate=2019-10-10&ids=channel%3D%3DMINE&metrics=views&startDate=2019-10-09', {
headers: {
// you will get the access token from Oauth2.0 playground
Authorization: 'Bearer ACCES_TOKEN'
}
});
Logger.log(response)
}
它说,从
工程团队已经决定不可能支持
这个用例。你需要使用YouTube以外的东西
访问G+页面拥有的频道的高级服务
所以,似乎没有人支持你想要的谢谢,阿尔贝托。我已经尝试了你提到的帖子中的步骤,但我不知道如何让它工作。我必须执行步骤9并生成一个刷新令牌,但我不知道如何在应用程序脚本中使用它。这是解决了让它在应用程序脚本中正常工作的问题,还是解决了非应用程序脚本的问题?生成刷新令牌后,我不知道下一步要做什么。好的,我编辑了我的答案,以便您可以尝试直接使用访问令牌并检索您需要的数据,我给您的是一个应用程序脚本解决方案,用于做您想做的事情,感谢您的跟进。我尝试了你的代码,但得到了相同的结果:没有找到日志。当我运行您的代码,然后选择主电子邮件帐户时masteraccount@gmail.com代码工作正常,但是,当我运行代码,然后选择我想要的YouTube频道/品牌帐户时,什么都没有发生。我是做错了什么,还是这是一个更大的问题?好像我在编辑后的回答中所说的那样,这是不受支持的