Youtubeチャンネルの動画タイトルとURLの一覧を取得【Google Apps Script】
API「YouTube Data API v3」を使用 ※1日当たりのリクエスト数等制限があります YoutubeDataAPI概要サイト
コピペでOK、id:〇〇の部分を取得したいチャンネルのChannelIdに変更し
const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('△△');の部分を
自身のシート名に設定すればOKです。
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
実際に使用したサンプルコード
//IDを指定して全ての動画のVIDEOIDを取得しタイトルとURLを抜き出す
function geturldata() {
//idを指定してリストを取得
let res = YouTube.Channels.list(part="contentDetails", { id:"〇〇" });
//アップロード動画の再生リスト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;
}
const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('△△');
let mytitle = [];
let myurl = [];
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]);
myurl.push(["https://www.youtube.com/watch?v=" + videoIds[i]]);
}
sheet.getRange(1,1,mytitle.length,mytitle[0].length).setValues(mytitle);
sheet.getRange(1,2,mycount.length,myurl[0].length).setValues(myurl);
}
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
A列とB列に対象のチャンネルのタイトルとURL一覧がサクッと表示されます。
YoutubeDataAPIの使用方法がわからない方は過去記事もご確認いただければ。
動画での説明もついています。