YouTube分析和报告API与谷歌应用程序脚本



我正在尝试使用YouTube Analytics and Reporting API和Google Apps Script,用我拥有和管理的YouTube品牌帐户的分析数据填充Google Sheet。

作为前言,我在我拥有的YouTube频道和我管理的频道上尝试过这一点,但都没有效果。我还看了所有的堆栈溢出问题&在过去的几天里,与此相关的回应都没有奏效。相信我,我说我什么都试过了。我不相信代码或我设置的方式是问题所在;我相信这与谷歌或YouTube API本身有关。

以下是我采取的步骤:

  • 在Google应用程序脚本中启用YouTube Analytics API和YouTube Data API。(YouTube报告API找不到,这可能是问题所在…(

  • 在Google开发者控制台中启用相同的API(YouTube报告API在那里可用(

  • 设置客户端ID&秘密并将我的项目链接到应用程序脚本

  • 通过在谷歌开发者控制台的YouTube Analytics and Reporting API Explorer中输入相同的精确参数(指标、维度等(,验证了我的代码确实有效。当我这样做时,浏览器确实导出了正确的信息。然而,在谷歌应用程序脚本中,它根本不起作用。

由于代码在浏览器中有效,但在谷歌应用程序脚本中无效,我认为有一些简单的事情我做错了,或者这是谷歌方面的错误。我希望有办法解决这个问题,因为我真的很想把我YouTube频道的数据输入谷歌表单。

谷歌应用程序脚本代码(为了简单起见,缩短了。"key"属性可能不是必需的,但没有它也不起作用(。

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-30 17:58:19:251 PDT]{columnHeaders=[{columnType=DIMENSION,dataType=STRING,name=day},{columnType=METRIC,dataType=INTEGER,name=averageViewDuration}],kind=youtubeAnalytics#resultTable,行=[[2019-09-30,0],[2019-10-01,0],[2019-10-02,0],2019-10-03,0],[2019-10-04,0],[209-10-05,0],[2019-10-06,0],2019-10-07,0],[2019-10-08,0]…]]}">

没有理由不工作。你认为问题出在哪里?

很抱歉,但目前你想做的是,Apps Script不支持它。这已经在谷歌问题跟踪器中报道过了,正如你在下一个链接中看到的那样:

  • Youtube Data api v3无法通过gas中的品牌帐户进行身份验证
  • YouTube API不会授权Google+页面的YouTube频道
  • YouTube.Videos.update对辅助频道上的任何视频抛出禁止的异常

作为一种变通方法,您可以实现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 API不会授权谷歌+页面的YouTube频道,它说

工程团队已决定不可能支持这个用例。你需要使用YouTube以外的东西访问G+页面拥有的频道的高级服务。

所以,似乎不支持您想要的

相关内容

最新更新