برای اجرای نمونه کد، باید YouTube Data API و YouTube Analytics API (v2) را در Apps Script فعال کنید. Data API Quickstart نحوه افزودن یک سرویس را توضیح می دهد.
دادههای YouTube Analytics را به Google Sheets صادر کنید
این تابع از YouTube Analytics API برای واکشی دادههای مربوط به کانال کاربر تأیید شده استفاده میکند و یک Google Sheet جدید در Drive کاربر با دادهها ایجاد میکند.
بخش اول این نمونه یک فراخوان ساده YouTube Analytics API را نشان می دهد. این تابع ابتدا شناسه کانال کاربر فعال را واکشی می کند. با استفاده از آن شناسه، این تابع یک تماس API YouTube Analytics برای بازیابی بازدیدها، پسندیدنها، دوست نداشتنها و اشتراکگذاریها در 30 روز گذشته برقرار میکند. API داده ها را در یک شی پاسخ که حاوی یک آرایه دو بعدی است، برمی گرداند.
بخش دوم نمونه یک صفحه گسترده می سازد. این صفحهگسترده در Google Drive کاربر تأیید شده با نام «گزارش YouTube» و محدوده تاریخ در عنوان قرار میگیرد. این تابع صفحه گسترده را با پاسخ API پر می کند، سپس ستون ها و ردیف هایی را که محورهای نمودار را تعریف می کنند قفل می کند. یک نمودار ستونی انباشته برای صفحه گسترده اضافه شده است.
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'); // The YouTubeAnalytics.Reports.query() function has four required parameters and one optional // parameter. The first parameter identifies the channel or content owner for which you are // retrieving data. The second and third parameters specify the start and end dates for the // report, respectively. The fourth parameter identifies the metrics that you are retrieving. // The fifth parameter is an object that contains any additional optional parameters // (dimensions, filters, sort, etc.) that you want to set. var analyticsResponse = YouTubeAnalytics.Reports.query({ "startDate": oneMonthAgoFormatted, "endDate": todayFormatted, "ids": "channel==" + channelId, "dimensions": "day", "sort": "-day", "metrics": "views,likes,dislikes,shares" }); // Create a new Spreadsheet with rows and columns corresponding to our dates var ssName = 'YouTube channel report ' + oneMonthAgoFormatted + ' - ' + todayFormatted; var numRows = analyticsResponse.rows.length; var numCols = analyticsResponse.columnHeaders.length; // Add an extra row for column headers var ssNew = SpreadsheetApp.create(ssName, numRows + 1, numCols); // Get the first sheet 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; } // This takes a 2 dimensional array headersRange.setValues([headers]); // Bold and freeze the column names headersRange.setFontWeight('bold'); sheet.setFrozenRows(1); // Get the data range and set the values var dataRange = sheet.getRange(2, 1, numRows, numCols); dataRange.setValues(analyticsResponse.rows); // Bold and freeze the dates var dateHeaders = sheet.getRange(1, 1, numRows, 1); dateHeaders.setFontWeight('bold'); sheet.setFrozenColumns(1); // Include the headers in our range. The headers are used // to label the axes 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); }