YouTube アナリティクス サービス

YouTube アナリティクス サービスを使用すると、Apps Script で YouTube Analytics API を使用できます。この API を使用すると、YouTube の動画やチャンネルの視聴統計、人気度指標、ユーザー属性情報を取得できます。

リファレンス

このサービスの詳細については、YouTube アナリティクス API のリファレンス ドキュメントをご覧ください。Apps Script のすべての高度なサービスと同様に、YouTube アナリティクス サービスでは、公開 API と同じオブジェクト、メソッド、パラメータを使用します。詳細については、メソッド シグネチャの決定方法をご覧ください。

サンプルコード

以下のサンプルコードでは、YouTube アナリティクス API のバージョン 2 と YouTube Data API のバージョン 3 を使用しています。これらは Apps Script の YouTube サービスからアクセスできます。

問題を報告したり、その他のサポートを見つけたりするには、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; }