خدمة "إحصاءات YouTube"

تتيح لك خدمة "إحصاءات YouTube" استخدام YouTube Analytics API في Apps Script. تتيح واجهة برمجة التطبيقات هذه للمستخدمين استرداد إحصاءات المشاهدة ومقاييس الرواج والمعلومات الديموغرافية الخاصة بالفيديوهات والقنوات على YouTube.

مراجع

للحصول على معلومات مفصّلة حول هذه الخدمة، يُرجى الاطّلاع على المستندات المرجعية الخاصة بواجهة YouTube Analytics API. مثل جميع الخدمات المتقدّمة في Apps Script، تستخدم خدمة YouTube Analytics الكائنات والطرق والمعلَمات نفسها التي تستخدمها واجهة برمجة التطبيقات العامة. لمزيد من المعلومات، اطّلِع على كيفية تحديد تواقيع الطرق.

نموذج التعليمات البرمجية

يستخدم الرمز البرمجي النموذجي أدناه الإصدار 2 من YouTube Analytics API، بالإضافة إلى الإصدار 3 من YouTube Data API، ويمكنك الوصول إليهما من خلال خدمة YouTube في "برمجة تطبيقات Google".

للإبلاغ عن مشاكل والحصول على دعم آخر، يُرجى الاطّلاع على دليل دعم 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;
}