0

私は初めてで、GoogleでこのガイドYoutube Analytics Apiに従って、を使用して分析レポートをGoogleシートに保存しています。スクリプトを実行するたびに、次のようなエラーが発生します。Google Apps Script

TypeError: undefined からプロパティ "length" を読み取れません。

ここにコードがあります、

  function spreadsheetAnalytics() {
  // Get the channel ID
  var myChannels = YouTube.Channels.list('id', {mine: true});
  var channel = myChannels.items[0];
  var channelId = channel.id;
  // Set the dates for our report
  var today = new Date();
  var oneMonthAgo = new Date();
  oneMonthAgo.setMonth(today.getMonth() - 1);
  var todayFormatted = Utilities.formatDate(today, 'UTC', 'yyyy-MM-dd')
  var oneMonthAgoFormatted = Utilities.formatDate(oneMonthAgo, 'UTC', 'yyyy-MM-dd');

    var analyticsResponse = YouTubeAnalytics.Reports.query(
        'channel==' + channelId,
        oneMonthAgoFormatted,
        todayFormatted,
        'views,likes,dislikes,shares',
        {
          dimensions: 'day',
          sort: '-day'
        });

  var ssName = 'YouTube channel report ' + oneMonthAgoFormatted + ' - ' + todayFormatted;
  var numRows = analyticsResponse.rows.length;  // ERROR IN THIS LINE
  var numCols = analyticsResponse.columnHeaders.length;

  var ssNew = SpreadsheetApp.create(ssName, numRows + 1, numCols);
  var sheet = ssNew.getSheets()[0];

  // Get the range for the title columns
  // Remember, spreadsheets are 1-indexed, whereas arrays are 0-indexed
  var headersRange = sheet.getRange(1, 1, 1, numCols);
  var headers = [];

  // These column headers will correspond with the metrics requested
  // in the initial call: views, likes, dislikes, shares
  for(var i in analyticsResponse.columnHeaders) {
    var columnHeader = analyticsResponse.columnHeaders[i];
    var columnName = columnHeader.name;
    headers[i] = columnName;
  }

  headersRange.setValues([headers]);

  headersRange.setFontWeight('bold');
  sheet.setFrozenRows(1);

  var dataRange = sheet.getRange(2, 1, numRows, numCols);
  dataRange.setValues(analyticsResponse.rows);

  var dateHeaders = sheet.getRange(1, 1, numRows, 1);
  dateHeaders.setFontWeight('bold');
  sheet.setFrozenColumns(1);

  var range = sheet.getRange(1, 1, numRows, numCols);
  var chart = sheet.newChart()
                   .asColumnChart()
                   .setStacked()
                   .addRange(range)
                   .setPosition(4, 2, 10, 10)
                   .build();
  sheet.insertChart(chart);
}

ガイドのコードは編集していません。与えられたものに正確に従っているだけです。このエラーを取り除くにはどうすればよいですか?

4

1 に答える 1

0

エラーが言うように、rows未定義です。これは、そのクエリに対して返されるデータがないためです。

次のドキュメントから: https://developers.google.com/youtube/analytics/v1/reference/reports/query#response

指定されたクエリで利用可能なデータがない場合、rows 要素は応答から省略されます。

于 2016-03-28T20:03:33.030 に答える