YouTubeからGASで動画情報（タイトルとかサムネ）の取得

以下ページの転載になります。ご了承ください。

[YouTubeから動画やサムネを取得するGoogle Apps Script - Yuto Hongo Portfolio](https://hongo.dev/blog/get-youtube-video-info-by-google-apps-script)

---

[<u>ひとことでいうとこんな記事</u>]

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

---

[<u>目次</u>]
- 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](https://developers.google.com/apps-script?hl=ja)

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](//images.ctfassets.net/yyxwl1h0rr37/1vQiaNmJhexdV0NN7blFdu/7b44c87cc5b589b9ab5e4a5f55a69826/____________________________2020-06-04_18.27.24.png?w=640&h=360&q=50)

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

### 動画リストの取得（Search.list）

```javascript
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)]：まだ取得できる動画情報がある場合、指定することで次の動画を取得できる

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


> 0 以上 50 以下の値を指定できます。デフォルト値は 5 です。
> 
> 転載： [Search: list  |  YouTube Data API  |  Google Developers](https://developers.google.com/youtube/v3/docs/search/list?hl=ja)

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


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


### 取得した動画情報の構造

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

```javascript
{
  "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](https://developers.google.com/youtube/v3/docs/search?hl=ja#resource)

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

```javascript
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](https://developers.google.com/youtube/player_parameters?hl=ja)


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

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

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


[![google-apps-script-template-for-google-spreadsheet-thumb](//images.ctfassets.net/yyxwl1h0rr37/7AVkSo0bkz4Q9nnwEr78x3/0068102d90879f9274088d7408dd7a0d/JAMStack.009.png?w=480&h=360&q=50)<br/>Spreadsheetでラクしたい Google Apps Script ソースコードテンプレート](https://hongo.dev/blog/google-apps-script-template-for-google-spreadsheet)


---

[<u>その他</u>]

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

０から学ぶチャンネル(https://www.youtube.com/channel/UCJDrlIpOiV59K3crQnygExQ)

---

最後までお読みいただき、誠にありがとうございます。様々なことを学んでいきたいと思っていますので、内容やソースコード等のアドバイスいただけると幸いです。