GASでYouTube連携
GASとYouTube Data APIの連携
Google Apps Script(GAS)を使ってYouTube Data APIにアクセスするには、まず Advanced Services を有効化し、Google Cloud Console で YouTube Data API を有効にします。設定は「サービス」タブで「YouTube Data API v3」をオンにし、必要なスコープ(例:https://www.googleapis.com/auth/youtube.readonly)をスクリプトに追加します。これにより、GAS から YouTube オブジェクトを直接呼び出せるようになります。
以下は、チャンネルの動画リストを取得し、スプレッドシートに書き込むサンプルコードです。コードは 高度な連携 を実現するために、ページング処理とエラーハンドリングを組み込んでいます。
function listVideos() {
const channelId = 'UCxxxxxxxxxxxx';
const sheet = SpreadsheetApp.getActiveSheet();
sheet.clearContents();
sheet.appendRow(['動画ID', 'タイトル', '公開日']);
let nextPageToken = '';
do {
const response = YouTube.Videos.list('snippet', {
channelId: channelId,
maxResults: 50,
pageToken: nextPageToken
});
response.items.forEach(item => {
sheet.appendRow([item.id, item.snippet.title, item.snippet.publishedAt]);
});
nextPageToken = response.nextPageToken;
} while (nextPageToken);
}
このスクリプトを実行すると、YouTube Data API から取得したデータがスプレッドシートに自動で反映されます。API の呼び出し回数制限に注意し、必要に応じて Utilities.sleep でリクエスト間隔を調整してください。
Analytics APIとBigQuery APIを使った高度な分析
YouTube の視聴データをさらに深く分析したい場合、Analytics API と BigQuery API を組み合わせると強力です。Analytics API で取得したレポートを BigQuery にロードし、SQL で複雑なクエリを実行できます。
まず、Google Cloud Console で BigQuery API を有効化し、プロジェクトにデータセットを作成します。次に、Apps Script から Analytics API を呼び出し、JSON レポートを取得します。取得したデータを BigQuery.Jobs.insert でロードします。
function loadAnalyticsToBigQuery() {
const viewId = 'ga:12345678';
const startDate = '30daysAgo';
const endDate = 'today';
const metrics = 'ga:views,ga:averageViewDuration';
const dimensions = 'ga:videoTitle,ga:videoId';
const report = AnalyticsReporting.Reports.batchGet({
reportRequests: [{
viewId: viewId,
dateRanges: [{startDate, endDate}],
metrics: [{expression: metrics}],
dimensions: [{name: dimensions}]
}]
});
const rows = report.reports[0].data.rows;
const rowsToInsert = rows.map(row => ({
json: {
videoId: row.dimensions[1],
videoTitle: row.dimensions[0],
views: parseInt(row.metrics[0].values[0]),
avgDuration: parseFloat(row.metrics[0].values[1])
}
}));
const job = BigQuery.Jobs.insert({
configuration: {
load: {
destinationTable: {
projectId: 'your-project-id',
datasetId: 'youtube_analytics',
tableId: 'video_stats'
},
schema: {
fields: [
{name: 'videoId', type: 'STRING'},
{name: 'videoTitle', type: 'STRING'},
{name: 'views', type: 'INTEGER'},
{name: 'avgDuration', type: 'FLOAT'}
]
},
writeDisposition: 'WRITE_TRUNCATE'
}
},
jobReference: {
jobId: 'load_job_' + new Date().getTime()
}
}, {rows: rowsToInsert});
}
BigQuery でのクエリ例として、視聴時間が長い動画を抽出する SQL は次のようになります。
SELECT videoTitle, SUM(avgDuration * views) AS totalWatchTime
FROM `your-project-id.youtube_analytics.video_stats`
GROUP BY videoTitle
ORDER BY totalWatchTime DESC
LIMIT 10;
このように、高度な連携 を実現することで、YouTube のデータをビジネスインサイトに変換できます。
拡張サービスの設定と有効化
Apps Script で外部 API を利用する際は、拡張サービス の設定が不可欠です。設定手順は以下の通りです。
- スクリプトエディタの左側メニューから「サービス」を選択。
- 「+」ボタンをクリックし、利用したいサービス(例:YouTube Data API、Analytics API、BigQuery API)を検索。
- 該当サービスを選択し、「追加」をクリック。
- スクリプト内で
ServiceNameオブジェクトを使用して API を呼び出す。
また、Google Cloud Console で API キーや OAuth クライアント ID を作成し、有効化 した API のスコープをスクリプトに設定します。スコープは appsscript.json の oauthScopes 配列に追加します。
{
"timeZone": "Asia/Tokyo",
"oauthScopes": [
"https://www.googleapis.com/auth/spreadsheets",
"https://www.googleapis.com/auth/youtube.readonly",
"https://www.googleapis.com/auth/analytics.readonly",
"https://www.googleapis.com/auth/bigquery"
]
}
設定が完了すると、Apps Script から直接 API を呼び出せるようになり、高度な連携 が可能になります。設定ミスやスコープ不足は認証エラーの原因になるため、必ず確認してください。
コメント
コメントを投稿