GASでYoutube Data APIを使用して指定したチャンネルの動画の一覧データを取得【Google Apps Script】

API「YouTube Data API v3」を使用

※1日当たりのリクエスト数等制限があります

YoutubeDataAPI概要サイト

指定した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);

}

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です