سرویس تجزیه و تحلیل YouTube

سرویس YouTube Analytics به شما امکان می دهد از API YouTube Analytics در Apps Script استفاده کنید. این API به کاربران امکان بازیابی آمار بازدید، معیارهای محبوبیت و اطلاعات جمعیت شناختی ویدیوها و کانال های YouTube را می دهد.

ارجاع

برای اطلاعات دقیق در مورد این سرویس، به مستندات مرجع YouTube Analytics API مراجعه کنید. مانند همه سرویس‌های پیشرفته در Apps Script، سرویس YouTube Analytics از همان اشیا، روش‌ها و پارامترهای API عمومی استفاده می‌کند. برای اطلاعات بیشتر، نحوه تعیین امضای روش را ببینید.

کد نمونه

کد نمونه زیر از نسخه 2 YouTube Analytics API و همچنین نسخه 3 YouTube Data API استفاده می کند که می توانید از طریق سرویس YouTube در Apps Script به آن دسترسی داشته باشید.

برای گزارش مشکلات و یافتن پشتیبانی دیگر، راهنمای پشتیبانی YouTube API را ببینید.

گزارش ایجاد کنید

این تابع یک صفحه گسترده حاوی تعداد بازدید روزانه، معیارهای زمان تماشا و تعداد مشترکین جدید برای ویدیوهای یک کانال ایجاد می کند.

advanced/youtubeAnalytics.gs
/**
 * Creates a spreadsheet containing daily view counts, watch-time metrics,
 * and new-subscriber counts for a channel's videos.
 */
function createReport() {
  // Retrieve info about the user's YouTube channel.
  const channels = YouTube.Channels.list('id,contentDetails', {
    mine: true
  });
  const channelId = channels.items[0].id;

  // Retrieve analytics report for the channel.
  const oneMonthInMillis = 1000 * 60 * 60 * 24 * 30;
  const today = new Date();
  const lastMonth = new Date(today.getTime() - oneMonthInMillis);

  const metrics = [
    'views',
    'estimatedMinutesWatched',
    'averageViewDuration',
    'subscribersGained'
  ];
  const result = YouTubeAnalytics.Reports.query({
    ids: 'channel==' + channelId,
    startDate: formatDateString(lastMonth),
    endDate: formatDateString(today),
    metrics: metrics.join(','),
    dimensions: 'day',
    sort: 'day'
  });

  if (!result.rows) {
    console.log('No rows returned.');
    return;
  }
  const spreadsheet = SpreadsheetApp.create('YouTube Analytics Report');
  const sheet = spreadsheet.getActiveSheet();

  // Append the headers.
  const headers = result.columnHeaders.map((columnHeader)=> {
    return formatColumnName(columnHeader.name);
  });
  sheet.appendRow(headers);

  // Append the results.
  sheet.getRange(2, 1, result.rows.length, headers.length)
      .setValues(result.rows);

  console.log('Report spreadsheet created: %s',
      spreadsheet.getUrl());
}

/**
 * Converts a Date object into a YYYY-MM-DD string.
 * @param {Date} date The date to convert to a string.
 * @return {string} The formatted date.
 */
function formatDateString(date) {
  return Utilities.formatDate(date, Session.getScriptTimeZone(), 'yyyy-MM-dd');
}

/**
 * Formats a column name into a more human-friendly name.
 * @param {string} columnName The unprocessed name of the column.
 * @return {string} The formatted column name.
 * @example "averageViewPercentage" becomes "Average View Percentage".
 */
function formatColumnName(columnName) {
  let name = columnName.replace(/([a-z])([A-Z])/g, '$1 $2');
  name = name.slice(0, 1).toUpperCase() + name.slice(1);
  return name;
}