GASでYoutube Data APIを使用して指定したチャンネルの動画の一覧データを取得【Google Apps Script】
API「YouTube Data API v3」を使用
※1日当たりのリクエスト数等制限があります
指定したChannelIdからアップロード動画の一覧を取得し、アップロード動画の一覧Idから各動画のデータを取得してスプレッドシートに取得するサンプルコード
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
function myFunction() {
//idを指定してリストを取得
let res = YouTube.Channels.list(part="contentDetails", { id:"UCHP76ZuS_0luJpGErA1JF-Q" });
//アップロード動画の再生リストIDを取得して変数に入れておく
let listid = res.items[0].contentDetails.relatedPlaylists.uploads;
//取得したアップロード動画の再生リストIDから50個動画のリストを取得する
let listres = YouTube.PlaylistItems.list('contentDetails', { playlistId:listid,maxResults:50});
//次のページのトークンを取得する
let nexttoken = listres.nextPageToken;
let videoIds = [];
//取得した動画アイテムをデータ分idを取得する
for(let i = 0; i<listres.items.length; i++){
//2次元で追加していく
videoIds.push(listres.items[i].contentDetails.videoId);
}
while(nexttoken !== undefined){
//取得したアップロード動画の再生リストIDから50個動画のリストを取得する
listres = YouTube.PlaylistItems.list('contentDetails', { playlistId:listid,maxResults:50,pageToken:nexttoken});
//取得した動画アイテムをデータ分idを取得する
for(let i = 0; i<listres.items.length; i++){
//2次元で追加していく
videoIds.push(listres.items[i].contentDetails.videoId);
}
nexttoken = listres.nextPageToken;
}
console.log(videoIds);
const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('data');
let mytitle = [];
let mycount = [];
for(let i=0; i<videoIds.length; i++){
let videores = YouTube.Videos.list('snippet,statistics',{id:videoIds[i]});
mytitle.push([videores.items[0].snippet.title]);
mycount.push([videores.items[0].statistics.viewCount]);
}
sheet.getRange(2,1,mytitle.length,mytitle[0].length).setValues(mytitle);
sheet.getRange(2,2,mycount.length,mycount[0].length).setValues(mycount);
}
指定したチャンネルの再生リストの一覧を取得し、その取得したリストのタイトルと、説明欄、動画数を取得してスプレッドシートに記載するサンプルコード
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('sample');
//指定したチャンネルの再生リストのIDを取得
function getplaylist() {
//channelidを指定し、指定したチャンネルの再生リストを返す
let playlists = YouTube.Playlists.list(part='contentDetails',{channelId:'UCHP76ZuS_0luJpGErA1JF-Q'})
console.log(playlists);
//タイトルと説明文用の配列
let titleary = [];
let descary = [];
//動画数
let contentcount = [];
for(let i=0; i<playlists.items.length; i++){
//再生リストのIdを指定しタイトルと説明文を取得 contentDetailsを追加して動画数も取得する
let videores = YouTube.Playlists.list(part='snippet,contentDetails',{id:playlists.items[i].id})
//概要からタイトルと説明文を取得し配列に入れる
titleary.push([videores.items[0].snippet.title]);
descary.push([videores.items[0].snippet.description]);
contentcount.push([videores.items[0].contentDetails.itemCount]);
}
//指定したシートの2行目1列目にタイトルデータを入れる
sheet.getRange(2,1,titleary.length,titleary[0].length).setValues(titleary);
//指定したシートの2行目2列目にタイトルデータを入れる
sheet.getRange(2,2,descary.length,descary[0].length).setValues(descary);
//指定したシートの2行目3列目に動画数のデータを入れる
sheet.getRange(2,3,contentcount.length,contentcount[0].length).setValues(contentcount);
}