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

عرض إحصاءات المشاهدات ومقاييس الرواج والمعلومات الديمغرافية الخاصة بالفيديوهات والقنوات على YouTube

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

هذه خدمة متقدّمة يجب تفعيلها قبل الاستخدام.

مراجع

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

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

يستخدِم الرمز البرمجي النموذجي التالي الإصدار 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;
}