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に変換します。

Channels: list

こちらも下記の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つにわけて記事を書きました。コードも手抜きの部分がありますが、見ていただきありがとうございました🙇