GASで動画一覧を取得!YouTube APIの活用方法
YouTube APIを使って、動画の一覧って取得できるのかな?

猫男

catman
いい質問だ。catmanがGASでYouTube APIを活用して、動画の一覧を取得する方法を伝授しよう。
GASでYouTube APIを使う準備
まず、GASからYouTube APIにアクセスするための準備を進めよう。
APIキーの取得
- Google Cloud Platformにアクセスしてプロジェクトを作成する。
- 「APIとサービス」の「ライブラリ」からYouTube Data API v3を有効にする。
- 「認証情報」タブでAPIキーを生成する。これはお願いだから大事にしてくれ。
GASプロジェクトの作成
- Google スプレッドシートを開き、拡張機能からApps Scriptを選択して新しいプロジェクトを作成する。
設定はわかったけれど、実際のスクリプトでどうやるのかなぁ…

猫男
GASでYouTube動画一覧を取得する方法
ここからが本番。GASを使って動画一覧を取得するコードを組んでみよう。
YouTube動画一覧取得のスクリプト
まず、基本的なスクリプトだ。
function getYoutubeVideos() {
var apiKey = 'YOUR_API_KEY';
var channelId = 'CHANNEL_ID';
var url = 'https://www.googleapis.com/youtube/v3/search?key=' + apiKey + '&channelId=' + channelId + '&part=snippet,id&order=date&maxResults=5';
var response = UrlFetchApp.fetch(url);
var json = JSON.parse(response.getContentText());
var videos = json.items;
videos.forEach(function(video) {
Logger.log(video.snippet.title);
});
}
このスクリプトでは、UrlFetchApp.fetch()を使ってYouTube Data APIからデータを取得し、JSON形式で解析、動画のタイトルを取得している。
‘YOUR_API_KEY’は自分のAPIキー、’CHANNEL_ID’はデータを取得したいチャンネルものに変更してくれよな。

catman
ポイントは、fetch()メソッドを使ってAPIからデータを取得していること。それをJSONとして解析して中身を扱うのだ。簡単だろう?
YouTube Analytics APIも使ってみよう
YouTube APIにはAnalytics機能もある。GASで使えるデータの幅が広がる。
function getYoutubeAnalytics() {
var apiKey = 'YOUR_API_KEY';
var metrics = 'views,likes,subscribersGained';
var url = 'https://youtubeanalytics.googleapis.com/v2/reports?ids=channel==CHANNEL_ID&metrics=' + metrics + '&dimensions=video&maxResults=5&access_token=' + apiKey;
var response = UrlFetchApp.fetch(url);
var json = JSON.parse(response.getContentText());
Logger.log(json);
}
このスクリプトでは、YouTube Analytics APIにリクエストを送り、動画の視聴回数やいいねの数を取得している。
練習問題
YouTube Data APIで、特定のキーワードでフィルターした動画一覧を取得するスクリプトを書いてみてください。
解答・解説
以下が解答のスクリプトです。解説を見て、動作を確認してみましょう。
function searchYoutubeVideos() {
var apiKey = 'YOUR_API_KEY';
var query = 'cat videos';
var url = 'https://www.googleapis.com/youtube/v3/search?q=' + encodeURIComponent(query) + '&key=' + apiKey + '&part=snippet,id&type=video&maxResults=5';
var response = UrlFetchApp.fetch(url);
var json = JSON.parse(response.getContentText());
var videos = json.items;
videos.forEach(function(video) {
Logger.log(video.snippet.title);
});
}
このスクリプトでは、q=パラメータを用いて特定のキーワード(例は「cat videos」)で検索し、取得された動画情報を順次ログに出力している。
文字列をURLに安全に組み込むために、encodeURIComponent()を用いてクエリパラメータをエンコードしている点もポイントだ。
やった!GASでもYouTube APIでデータを取得できるようになったぞ!

猫男

catman
その調子だ、どんどんデータを活用して、素敵なアプリケーションを作ってみると良いさ。