Как получить отчет YouTube Analytics для каждого видео в фирменном аккаунте с помощью API данных YouTube и отчета YouTube Analytics - PullRequest
0 голосов
/ 15 ноября 2018

Я хочу получать отчет Analytics для каждого видео в фирменном аккаунте. Я следую инструкциям на этом сайте. Ссылка: https://mashe.hawksey.info/2017/10/getting-youtube-analytics-with-google-apps-script-when-you-get-authentication-loops/ В руководстве я предоставляю способ получения и хранения авторизованного токена с помощью библиотеки "cGoa". Мой подход заключается в том, чтобы сначала получить все видео в учетной записи YoutUbe и сохранить их в массиве, а затем получить аналитику для каждого видео с циклом. Но я получаю ошибки при запуске кода для получения видео с канала. Ниже приведен код, который я хотел использовать для получения видео. Примечание. Я использую библиотеку YouTube, приведенную в руководстве, которое я прочитал по ссылке выше

var goa = cGoa.GoaApp.createGoa('youtube-analytics',
                                  PropertiesService.getUserProperties())
                                  .execute();
   
  YouTube.setTokenService(function(){ return goa.getToken(); } );
  //YouTubeAnalytics.setTokenService(function(){ return goa.getToken(); });  
 
  var results = YouTube.channelsList('id,snippet,contentDetails,statistics', {mine: true});
  //Logger.log(results[0].contentDetails.relatedPlaylists.uploads);
  //Logger.log(results[0].id);
  var channelId = results[0].id;
  for(var i in results) {
    var item = results[i];
    // Get the playlist ID, which is nested in contentDetails, as described in the
    // Channel resource: https://developers.google.com/youtube/v3/docs/channels
    var playlistId = item.contentDetails.relatedPlaylists.uploads;
    var nextPageToken = '';
    var titleArray = [];
    var idArray = [];
    var reportArray = [];
    
    // This loop retrieves a set of playlist items and checks the nextPageToken in the
    // response to determine whether the list contains additional items. It repeats that process
    // until it has retrieved all of the items in the list.
    while (nextPageToken != null) {
      var playlistResponse = YouTube.playlistItemsList('snippet', {
        playlistId: playlistId,
        maxResults: 25,
        pageToken: nextPageToken
      });

      for (var j = 0; j < playlistResponse.items.length; j++) {
        var playlistItem = playlistResponse.items[j];
        //Logger.log('[%s] Title: %s',
                    //playlistItem.snippet.resourceId.videoId,
                   //playlistItem.snippet.title);
        titleArray[j] = playlistItem.snippet.title;
        idArray[j] = playlistItem.snippet.resourceId.videoId;
        var videoId = playlistItem.snippet.resourceId.videoId;
        reportArray[j] = runYoutubeAnalyticsReport(channelId , videoId)

      }
      //Browser.msgBox("hellon");
      nextPageToken = playlistResponse.nextPageToken;
    }
    create_cheet(idArray , titleArray , reportArray);
  }
}
Когда я запускаю код, это ошибка, которую я получаю
Error: { "error": { "errors": [ { "domain": "youtube.part", "reason": "unknownPart", "message": "snippet?pageToken=CBkQAA", "locationType": "parameter", "location": "part" } ], "code": 400, "message": "snippet?pageToken=CBkQAA" } } (line 83, file "Youtube", project "YouTube")

Я боролся с этой проблемой уже более недели. Надеюсь, я найду решение этой проблемы. Я высоко ценю вашу помощь и ответ. Спасибо Вам!

...