Youtubeチャンネルの最新動画の公開日付を取得【Google Apps Script】
API「YouTube Data API v3」を使用 ※1日当たりのリクエスト数等制限があります YoutubeDataAPI概要サイト
コピペでOK、サービスに追加した後シートを合わせてチャンネルIDを設定すればそのまま使用可能です。
チャンネルIDを元にチャンネル情報を取得→チャンネル情報の中にあるアップロード動画リストを取得
アップロード動画リストから最新の動画のIDを取得→動画のIDから動画情報を取得
動画情報から動画の公開日付を取得するという流れです。
実際に使用したサンプルコード----------------------------------------------------------
//sheetにアクティブなスプレッドシートのアクティブなシートを指定する
const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
function myFunction() {
//最後日時データを入れる為の配列
let ary = [];
//最後URLデータを入れる為の配列
let urlary = [];
//チャンネルのリストを配列で取得する 2行目の1列目から6行分、1列分のデータ
let values = sheet.getRange(2,1,6,1).getValues();
//配列の範囲文繰り返す
for(let i=0; i<values.length; i++){
//進行状況を確認する
console.log(i);
//channelidを指定してチャンネルのコンテンツ情報を取得する
let res = YouTube.Channels.list(part='contentDetails',{id:values[i][0]});
//アップロード動画の再生リストIDを取得してlistidに入れておく
let listid = res.items[0].contentDetails.relatedPlaylists.uploads;
//取得したアップロード動画の再生リストIDを元にコンテンツ情報を取得する
let listres = YouTube.PlaylistItems.list(part='contentDetails',{playlistId:listid,maxResults:1});
//1個目の動画のビデオIDを取得する
let newvideoid = listres.items[0].contentDetails.videoId;
//URLをつくって配列に入れる
urlary.push(['https://www.youtube.com/watch?v=' + newvideoid]);
//ビデオIDを元に動画の情報を取得する
let videores = YouTube.Videos.list(part='snippet',{id:newvideoid});
//取得した公開日付データを日付のオブジェクトに変換
let mydate = new Date(videores.items[0].snippet.publishedAt);
//日付のフォーマットを希望の形に変換
let newFormatDate = Utilities.formatDate(mydate, "GMT", "yyyy/MM/dd");
//日付を配列に追加していく
ary.push([newFormatDate]);
}
//日時を入れる
sheet.getRange(2,2,ary.length,ary[0].length).setValues(ary);
//対象の動画のURLを入れる
sheet.getRange(2,3,ary.length,ary[0].length).setValues(urlary);
}
実際に使用したサンプルコード----------------------------------------------------------
YoutubeDataAPIの過去の記事、参考にして頂ければと思います。