YouTubeから動画やサムネを取得するGoogle Apps Script

[ひとことでいうとこんな記事]

  • 自分で運用しているYouTubeチャンネルの動画の情報を取得できます!

[目次]

  • Google Apps Script と Googleのサービス群は相性抜群!
  • YouTubeの情報をGASで取得するための事前準備
  • GASでのYouTube動画情報取得の書き方
  • 取得したYouTubeの動画情報をスプレッドシートに保存する

Google Apps Script と Googleのサービス群は相性抜群!

Many Google apps, one platform in the cloud

転載: Apps Script | Google Developers

Google Apps Script は、様々なGoogleのサービスに関連したプログラムができる便利なものとなっています。

公式にも書いてあるとおりたくさんGoogleのサービスがありますが、それらをいろいろ複合的に処理できるわけですね。

YouTubeのアイコンは公式のTOPに掲載されていませんが、もちろんGASで情報を活用することができます。

YouTubeの情報をGASで取得するための事前準備

Google Apps Script を記述する前に、以下の設定をしておきましょう。

Google Apps Script ページ上部のタブ > リソース > Googleの拡張サービス… > Advanced Google Services の YouTube Data APIを有効

get-youtube-video-info-by-google-apps-script-01

GASでのYouTube動画情報取得の書き方

動画リストの取得(Search.list)

YouTube.Search.list('id,snippet', {
  maxResults: [budget(Integer)], 
  channelId: '[YourChannelID(String)]',
  order: "date",  // 取得順序は、最新動画順にしてある
  type: "video",
  pageToken: '[NextToken(String)]'
})    
  • [budget(Integer)]:一度に何個の動画情報を取得するか
  • [YourChannelID(String)]:あなたの運用しているチャンネルのID
  • [NextToken(String)]:まだ取得できる動画情報がある場合、指定することで次の動画を取得できる

お気づきの人もいるかも知れませんが、NextTokenがあるということは 一気に取得できる上限があるってことなんですよね。

0 以上 50 以下の値を指定できます。デフォルト値は 5 です。

転載: Search: list | YouTube Data API | Google Developers

ということなので、ページングの要領で何度も動画情報を取得する必要があるということです。

ちなみに、160本ほど動画をアップロードしている方に頼まれてこの手法で取得しておりますが、なぜか64個ほどの動画情報しか取得ができていません。(原因がわかりません。だれか助けてください

取得した動画情報の構造

以下のような動画情報がitemsに配列として複数個入ってきます。

{
  "kind": "youtube#video",
  "etag": etag,
  "id": string,
  "snippet": {
    "publishedTime": datetime,
    "channelId": string,
    "title": string,
    "description": string,
    "thumbnails": {
      (key): {
        "url": string,
        "width": unsigned integer,
        "height": unsigned integer
      }
    },
    "channelTitle": string,
    "liveBroadcastContent": string
  }

参考: Search | YouTube Data API | Google Developers

実際私は、以下のように加工して利用していたりします。

function ParamToVideo_(param,upload){
  this.title = param.snippet.title
  this.slug = param.id
  this.description = param.snippet.description
  this.url = `https://www.youtube.com/watch?v=${param.id}`
  this.thumbnail = param.snippet.thumbnails.high.url
  this.iframe = `https://www.youtube.com/embed/${param.id}`
}

titleやdescriptionやidを取得するのはもちろん、iframe用のURLを生成したりしてます。

参考: YouTube 埋め込みプレーヤーとプレーヤーのパラメータ | YouTube IFrame Player API

取得したYouTubeの動画情報をスプレッドシートに保存する

Google Apps Script は冒頭にも記述したとおり様々なGoogleのサービスと連携しているので、__YouTubeの情報を取得し、それをGoogle Spread Sheet に入れる__なんてこともかんたんにできてしまいます。

その方法等は、以前記事にさせていただいた以下の内容を参考にぜひ実施してみてください。

google-apps-script-template-for-google-spreadsheet-thumb
Spreadsheetでラクしたい Google Apps Script ソースコードテンプレート


[お願い]

ささやかながらYouTubeでも、学んだことのアウトプットをしていく取り組みをしていきたいと思います。また、自分の好きなものの紹介も実施していきます。

チャンネル登録・高評価よろしくお願いいたします。


一緒に様々なことを学んでいく仲間を募集しています。

このサイトのお問い合わせなどからご連絡いただけると幸いです。