【问题标题】:YouTube Analytics and Reporting API with Google Apps Script带有 Google Apps 脚本的 YouTube 分析和报告 API
【发布时间】:2020-02-26 08:40:37
【问题描述】:

我正在尝试将 YouTube 分析和报告 API 与 Google Apps 脚本一起使用,以使用来自我拥有和管理的 YouTube 品牌帐户的分析数据填充 Google 表格。

作为前言,我已经在我拥有的 YouTube 频道和我管理的频道上尝试过这个,但没有任何效果。在过去的几天里,我还查看了与此相关的所有 Stack Overflow 问题和回复,但没有任何效果。当我说我已经尝试了一切时,请相信我。我不相信代码或设置方式是问题所在;我认为这与 Google 或 YouTube API 本身有关。

以下是我采取的步骤:

  • 在 Google Apps 脚本中启用 YouTube Analytics API 和 YouTube Data API。 (YouTube Reporting API 无处可寻,这可能是问题所在...)

  • 在 Google Developer Console 中启用相同的 API(YouTube 报告 API 可用)

  • 设置客户端 ID 和密码并将我的项目链接到 Apps 脚本

  • 通过在 Google Developer Console 的 YouTube Analytics and Reporting API Explorer 中输入完全相同的参数(指标、维度等)来验证我的代码确实有效。当我这样做时,资源管理器确实会导出正确的信息。但是,在 Google Apps Script 中,它根本不起作用。

由于代码在资源管理器中有效,但在 Google Apps 脚本中无效,我认为我做错了一些简单的事情,或者是 Google 方面的错误。我希望有办法解决这个问题,因为我真的很想将我的 YouTube 频道中的数据导入 Google 表格。

Google Apps 脚本代码(为简单起见而缩短。“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, 名称=averageViewDuration}],种类=youtubeAnalytics#resultTable, 行=[[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, 0], [2019-10-08, 0]...]]}"

没有理由认为它不应该工作。您认为是什么问题?

【问题讨论】:

    标签: google-apps-script google-api youtube-api youtube-data-api youtube-analytics-api


    【解决方案1】:

    抱歉,目前您想要执行的操作不受 Apps 脚本支持。它已在 Google 问题跟踪器中报告,您可以在以下链接中看到:

    作为一种解决方法,您可以按照this Stack Overflow 的帖子中所说的那样实现 Oauth2.0

    编辑

    如果您在使用刷新令牌时遇到问题,请在从 Oauth2.0 Playground 获取访问令牌后,使用此代码直接向 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)
    }
    

    来自 The YouTube API Will Not Authorize a Google+ Page's YouTube Channel,它说

    工程团队决定无法支持 这个用例。您需要使用 YouTube 以外的其他内容 访问 G+ 信息页拥有的频道的高级服务。

    所以,你想要的似乎没有支持

    【讨论】:

    • 谢谢,阿尔贝托。我已经尝试了您提到的帖子中的步骤,但我无法弄清楚如何让它工作。我必须执行第 9 步并生成一个刷新令牌,但我不知道如何在 Apps 脚本中使用它。这是否解决了让它在 Apps 脚本中正常工作的问题,或者这是一个非 Apps 脚本解决方法?生成刷新令牌后,我不知道下一步该做什么。
    • 好的,我编辑了我的答案,因此您可以尝试直接使用访问令牌并检索您需要的数据,我给您的是一个 Apps Script 解决方法来做您想做的事情
    • 感谢您的跟进。我尝试了您的代码,但得到了相同的结果:“未找到日志。”当我运行您的代码然后选择主电子邮件帐户 (masteraccount@gmail.com) 时,代码可以正常工作,但是,当我运行代码然后选择我想要的 YouTube 频道/品牌帐户时,什么也没有发生。我做错了什么还是这是一个更大的问题?
    • 似乎不支持,正如我在编辑的答案中所说的那样
    • 在我运行函数 makrequest() 后,我被要求授予权限。我选择了我的 YT 品牌帐户。然后在日志中显示“此项目需要访问您的 Google 帐户才能运行。请重试并允许这次。”我重复一遍,这是同样的错误。仅供参考@AlexNegrete
    猜你喜欢
    • 2014-03-24
    • 2019-12-09
    • 1970-01-01
    • 1970-01-01
    • 2014-03-05
    • 1970-01-01
    • 2019-08-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多