YouTubeのAPIを使用し、YouTubeスクレイピング的なことをやりたいと想います
今回でこの記事は最後になるかと思います。
また、実装方法については温かい目でみてください…。いろんなやり方があると思いますので参考程度になれば幸いです…。
目次
前回
前回はほぼほぼ完成までやりました。簡易的につくってる部分や罫線とか見た目の問題もありますが、そのへんは許してください…。
【GAS】YouTubeのAPIを利用し最新動画を取得する方法-③実装編
今回は
YouTubeのURLにチャンネルIDではなくユーザー名がURLになっているものがあります。
以下の記事でユーザ名からチャンネルIDに変換する方法をブラウザへのAPIリクエスト方法を一応記載してます。
ここでも改めてここで記載してAPIリクエストをコードに書いていこうかと思います。
チャンネルIDがない場合
チャンネルIDに関してですが、YouTubeのチャンネルページのURLはこんな感じになってます⇨ https://www.youtube.com/channel/[チャンネルID]
たまに[チャンネルID]が表示されておらずユーザー名がURLになっている場合があります。こんな感じ⇨ https://www.youtube.com/user/[ユーザー名]
今回のようにデータ取得にはチャンネルIDが必須なので、以下のAPIを使用しユーザー名からチャンネルIDに変換します。
こちらも下記のURLにパラメータをくっつけていきます。
パラメータは以下です。
- part
- forUsername
partに関しては色々指定できるみたいですが、余計なのは不要なので「id」だけ指定します。
forUsernameに関してはURLのユーザー名部分を指定します。⇨ https://www.youtube.com/user/[ユーザー名]
んで、できたHTTPリクエストが以下のような感じです。 上のSearchリクエストと同じようにAPI使用するときは必ずKeyをつけて使用します。
https://www.googleapis.com/youtube/v3/channels?part=id&key=XXXXXXXXXXXXXXX&forUsername=ZZZZZZZZZZZ
Channels APIを実行してみる
https://www.googleapis.com/youtube/v3/channels?part=id&key=XXXXXXXXXXXXXXX&forUsername=ZZZZZZZZZZZ
上記のURLをブラウザで実行してみます。
”id”の値がチャンネルIDになります。これでユーザー名からチャンネルIDの変換ができました。
"id": "チャンネルID"
実装
ではブラウザでチャンネルIDが返ってくることが確認できればコードを書いていきます。
まず事前に「ChannelIdSerach」シートを作成しておきます。
以下の太文字になっているkeyはご自身keyを使用してください。それ以外は変更なしです。
var serchURL = “https://www.googleapis.com/youtube/v3/channels?part=id&key=XXXXXXXXXXXX&forUsername=” + sheet.getRange(4,5).getValue();
また、私のやり方のでは、getRange(4,5)セルに入力されているユーザー名をgetRange(10,5)セルに表示してます。なので、実行前の前提としてgetRange(4,5)セルにユーザー名を入力してから実行してください。
//////////////////////////////////////
//チャンネルIDを調べるメソッド
//////////////////////////////////////
function channelIdSerach(){
//channelidserachシートを選択
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName('ChannelIdSerach');
//セルを初期化
sheet.getRange(10,5).clearContent();
//セルに記入したユーザIDとAPIを結合
var serchURL = "https://www.googleapis.com/youtube/v3/channels?part=id&key=XXXXXXXXXXXX&forUsername=" + sheet.getRange(4,5).getValue();
// JSONデータを取得
var json = UrlFetchApp.fetch(serchURL).getContentText();
var jsonData = JSON.parse(json);
var strchannelId = jsonData["items"][0]["id"];
sheet.getRange(10,5).setValue(strchannelId);
}
実行結果
上記のコードを実行すると以外のような結果になるかと思います。
見た目のセンスは無いかもしれないですが、真ん中に紫色のボタンを配置してます。このボタンを押すことでコードが実行されるようにしてみました。
最後
YouTube API v3に関してはこれで最後なります。
今までのものを簡単に言うと、検索するAPIを使用してその結果を出しただけのものになります。
初めてYouTubeAPIを使用する方やプログラミング初心者は勉強になるかと思います。私も勉強になりました。プログラミング初心者は少しハードル高いのかな?基準がわからないね…。
まあやりたいことを簡単だけどモノにするのは時間がかかります。
ということで4つにわけて記事を書きました。コードも手抜きの部分がありますが、見ていただきありがとうございました🙇