YouTubeのチャンネル登録者数をGoogle Apps Scriptで取得しよう

所要時間:30分

このレッスンのゴール

このレッスンでは、Google Apps Scriptで特定のYouTubeチャンネルの登録者数数を自動取得して、取得した内容をスプレッドシートに記録するプログラムを、Google Apps Scriptで作成していきます。

以前作成した、Twitterのフォロワー情報を取得するプログラムと、大きな流れは変わりません。今回はYouTubeのAPIを利用する方法を学ぶことが一番の目標です。

このレッスンでできるようになること

このレッスンのプログラムを完成させることで、以下のことができるようになります。

  • GoogleAppsScriptにYouTubeDataAPIを接続できる
  • YouTubeDataAPIを活用して基本的なデータの取得ができる
  • 取得したデータをGoogleAppsScriptを利用してスプレッドシートに書き込める

レッスン開始前のチェックリスト

このレッスンを始める前に、次に当てはまる方は、このレッスンを受講する前に必要な準備を終わらせましょう!

  • Google Apps Scriptという用語を聞いたことがない
    →前のレッスン「Google Apps Scriptとは?」をまずは受講しましょう
  • JavaScriptを書いたことがない
    →まずはProgateでJavasrciptの基本を学びましょう
  • Googleのアカウントを持っていない
    →GASの利用にはGoogleアカウントが必要です。こちらからアカウント作成をしましょう
  • 「Google Apps Script実践①:TwitterとSlackを連携する」を受講していない
    →このレッスンを受ける前に、受講しておきましょう

このレッスンの流れ

それでははじめていきたいと思います。手順としては、以下のようになります。

  1. YouTube Data APIを接続する
  2. スプレッドシートを取得する
  3. 再生数とチャンネル登録者数を取得する
  4. スプレッドシートに日付と再生数と登録者数を追加する

内容に入る前に、2つ事前準備があるのでそちらの設定をしていきましょう。

事前準備その1:Googleスプレッドシートを用意する

まずは Google Driveにアクセスして、スプレッドシートを作成してください。すでに、Googleアカウントが存在する場合は、URLにspreadsheet.newと入力すると、新規でスプレッドシートを作成することができます。

作成したら、A1〜A3までのセルに、「日付」「再生数」「登録者数」とそれぞれ入力しておきましょう。

ここまでできたら、スプレッドシートから、GoogleAppsScriptのエディタを開きます。やり方がわからない方は前のレッスンに戻って確認してみましょう。

これで事前準備その1は完了です!

事前準備その2:YouTubeのチャンネルIDを確認する

もう一つの準備は、今回取得するYouTubeのチャンネルIDを確認することです。
今回のプログラムは、チャンネルの登録者数など、公開されている情報を取得するだけなので、どのチャンネルを利用してもチャンネルに通知が行くことはありません。ご自身のチャンネルがある場合はそちらを利用いただき、ない場合はお好きなチャンネルを利用してください。もしくは私たちが運営しているDAINOTEのYouTubeチャンネルを利用してもらっても構いません。
https://www.youtube.com/channel/UCaeuEZcPrQMdMvI6VMFHc5Q

利用するチャンネルが決まったら、チャンネルIDを確認します。チャンネルIDはURLの最後の部分です。
このIDを利用して情報を取得するので、IDをメモしておきましょう。

これで事前準備その2も完了です。それではプログラムを実装していきましょう!

プログラムの全体像を確認しよう

それでは、さっそく実装していきましょう。 最終的なコードはこちらになります。
今すぐ全てが理解できなくて大丈夫です。詳細はこれから説明していきますので、ざっと全体を眺めておきましょう。

function addData() {
  var spreadSheet = SpreadsheetApp.getActive();
  var sheets = spreadSheet.getSheets();
  var channel = "UCaeuEZcPrQMdMvI6VMFHc5Q";
  var data = YouTube.Channels.list('statistics', {id: channel});
  var item = data.items[0];
  var info = [item.statistics.viewCount, item.statistics.subscriberCount];
  Logger.log(info)
  sheets[0].appendRow([new Date(), info[0], info[1]]);
}

それでは一緒に頑張りましょう!

Step1. YouTube Data APIを接続する

今回はGoogle Apps Script上で、Youtube Data APIを利用します。Youtube Data APIとは、Youtubeからデータを取得することができる窓口となります。 以下の流れで、Youtube Data APIをGoogle Apps Script上で使えるようにします。

  1. Google Apps Scriptのエディタの「サービス」の右側の+をクリックする
  2. YouTube Data API v3を選択する
  3. 追加をクリックする

画像のように、エディタにYouTubeと追加されていれば成功です。
Youtube APIとの接続準備が完了しました。

Step2. スプレッドシートを取得する

YouTube Data APIの利用準備が整ったら、あとはプログラムを実装していきます。
最初にやるのはスプレッドシートの取得です。これまでと同じようにシートを取得していきます。
内容に自信がない方は、前の講座で復習をしながら進めてみましょう。

今回はaddData()関数を実装していきます。

function addData(){
   var spreadSheet = SpreadsheetApp.getActive();
   var sheets = spreadSheet.getSheets(); 
}

 

Step3. 再生数とチャンネル登録者数を取得する

それでは次に、Youtube Data APIからデータの取得を行います。
まず変数channelに、事前準備その2で確認したYouTubeのIDを代入します。プログラム例では、DAINOTEのものを利用しています。
次に変数dataにYouTube Data APIを利用してデータを代入しています。

function addData(){
   var spreadSheet = SpreadsheetApp.getActive();
   var sheets = spreadSheet.getSheets();
   var channel = "UCaeuEZcPrQMdMvI6VMFHc5Q";
   var data = YouTube.Channels.list('statistics', {id: channel});
}

上記のコードを実行すると、認証画面が出てきます。こちらをすべて許可すると、Youtube APIからデータを取得することができるようになります。

今回取得したYouTube.Channels.list('statistics', {id: channel});は、idを変数channelとして、Channelのstatisticsに関するデータを取得する、という命令を出しています。
具体的には以下のドキュメントの「リソース表現」を見てみましょう。
https://developers.google.com/youtube/v3/docs/channels?hl=ja#resource

たくさんの情報が書かれいてますが、このうち次の部分のデータを取得している、ということになります。このことがわかっていれば、例えば'statistics'の部分を他の内容に変えたり、ドキュメントをみてチャンネルのID以外の方法でチャンネルを指定したりできるようになります。またYouTube.Channelsではチャンネルの情報を取得していますが、もちろんビデオの情報なども取得できます。いろいろ試してみましょう。

{
  "statistics": {
    "viewCount": unsigned long,
    "commentCount": unsigned long,
    "subscriberCount": unsigned long,
    "hiddenSubscriberCount": boolean,
    "videoCount": unsigned long
  }
}

さて、それでは今回は再生数と登録者数を利用するので、取得した値のうち「viewCount」と「subscriberCount」を取り出します。
dataは要素が一つしかないリスト構造なので、data.itemの1つ目の要素をitemに代入し、そこからviewCountとsubscriberCountを取得して、infoに代入しています。

function addData() {
  var spreadSheet = SpreadsheetApp.getActive();
  var sheets = spreadSheet.getSheets();
  var channel = "UCaeuEZcPrQMdMvI6VMFHc5Q";
  var data = YouTube.Channels.list('statistics', {id: channel});
  var item = data.items[0];
  var info = [item.statistics.viewCount, item.statistics.subscriberCount];
  Logger.log(info);
}

ここまでできたら、一度実行していみましょう。
Logger.log(info)を追記しているので、実行すると、再生数と購読者数が出力されるはずです。

Step4. スプレッドシートに日付と再生数と登録者数を追加する

それでは最後に、取得したYouTubeのデータをスプレッドシートに追記しましょう。
以下のコードを追加して、シート上にデータを出力できるようにします。

function addData() {
  var spreadSheet = SpreadsheetApp.getActive();
  var sheets = spreadSheet.getSheets();
  var channel = "UCaeuEZcPrQMdMvI6VMFHc5Q";
  var data = YouTube.Channels.list('statistics', {id: channel});
  var item = data.items[0];
  var info = [item.statistics.viewCount, item.statistics.subscriberCount];
  Logger.log(info)
  sheets[0].appendRow([new Date(), info[0], info[1]]);
}

コードは以前にも利用した、appendRowを使って、更新日の日付と、infoに格納してあるviewCountとsubscriberCountをそれぞれ取り出して記入しています。
今回はシートが一枚の想定なので、sheets[0]としていますが、複数枚のシートを使う場合はfor文を使っての実装ももちろん可能です。

このコードを実行すると、次の3つがスプレッドシートに追記されているはずです。

  • 取得した日付
  • 再生数
  • 登録者数

これで完成です!お疲れ様でした!

復習:定期実行をセットする

これでGoogle Apps Scriptのエディタで実行をすれば、YouTubeの登録者数が更新されるようになりました。
更に業務を効率化するために、定期実行をセットすることをオススメします。

定期実行のやり方は、以前の講座で解説をしていますので、ぜひそちらを参考にして毎日や毎週など、用途にあわせて設定しましょう。