GASを使ってYoutubeチャンネルの再生回数をプリザンターで管理してみる。


## はじめに
みなさん、こんにちは。Vtuberです。

新人が続々と参入してくるVtuber業界においては、ライバルを蹴落とすために常に監視の目を光らせている必要があります。ちょっとの油断が命取り。
そんな監視社会に欠かせないツールとして真っ先に名前が上がってくるのが、プリザンターではないでしょうか。

この記事は [Pleasanter(プリザンター) Advent Calendar 2020](https://qiita.com/advent-calendar/2020/pleasanter) の17日目の記事であり、以下に続くGASを使ってGoogle様のサービスと連携してみようのコーナー第3段です。
[Googleフォームの回答内容をプリザンターに登録してみる](https://qiita.com/sesese/items/6a0d3e8d25565631d30d)
[Analyticsのデータを毎日自動でプリザンターに登録する](https://qiita.com/sesese/items/b0149d46f229af62e347)

なお、今回の記事は、以下の記事を参考にさせて頂きました。ありがとうございます。
[プリザンターを用いてYoutube動画分析ツールを作ってみた！](https://qiita.com/Ooooooomin_365/items/d026381958591e3d7e64)
## YouTube連携の準備

今回は、YouTubeとの連携ですのでGoogle Apps Scriptのリソースは「YouTube Data API v3」をONにしてやっていきます。
詳しいことは過去記事を読むか、マイクロソフトに聞いて下さい。

![スクリーンショット 2020-12-17 19.50.33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/537390/f372e945-5942-d5a6-ea4f-acde70b21b29.png)

次に、YouTube側でAPIキーを発行する必要がありますので、以下の手順を参考にすすめてください。とても説明がわかりやすいです。感謝。
[Youtube Data API Key の取得手順](http://piyohiko.webcrow.jp/kids_tube/help/index.html)

次に、監視対象となるVtuberのチャンネルIDを調べる必要があります。
今回は、Vtuber界に嵐を巻き起こしたVtuber界の黒船ことサメちゃんを監視対象としてみます。

URLの/channel/ 移行の部分がチャンネルIDとなりますので、お手持ちのスマートフォンの録音機能を使ってメモを残しましょう。Vtuberは声が命。メモだってしっかり全力でしゃべります。
![スクリーンショット 2020-12-17 19.39.26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/537390/3c2fb8e5-7869-efdf-e7c3-a8cd25675c7c.png)

いつも通りプロパティはプロジェクトのプロパティに保存しておきます。わからない方は上記にリンクが貼ってある過去記事をどうぞ声に出して読んでみて下さい。喉には蜂蜜が良いと聞きます。
なお、YouTubeのチャンネルIDは公開情報なのでベタ書きです。

|プロパティ|値|
|:---|:---|
|Pleasanter_API_KEY|プリザンターで発行したAPIキー|
|YouTube_API_KEY|Youtubeで発行したAPIキー|
|API_URL|リクエストを投げるURL|

コードはこんな感じ。

```
function myFunction() {
 // APIキー
 const key = PropertiesService.getScriptProperties().getProperty('YouTube_API_Key')
 // チャンネルのチャンネルID
 let channelId = "UCoSrY_IQQVpmIRZ9Xf-y93g"

 // リクエストURL
 const youtubeAPIUrl = 'https://www.googleapis.com/youtube/v3/channels?part=snippet,statistics&id=' + channelId + '&key='+ key;
 
     Logger.log(youtubeAPIUrl);
 
 let json = UrlFetchApp.fetch(youtubeAPIUrl)
 let result = JSON.parse(json)
 
      Logger.log(result);

    var data = {
        "ApiVersion": 1.1,
        "ApiKey": PropertiesService.getScriptProperties().getProperty('Pleasanter_API_Key'),
        "Title": result.items[0].snippet.title,
        "Body" : result.items[0].snippet.description,
        "NumHash": {
            "NumA" : result.items[0].statistics.subscriberCount,
            "NumB" : result.items[0].statistics.videoCount,
            "NumC" : result.items[0].statistics.viewCount
        }
    };
  
    const api_url = PropertiesService.getScriptProperties().getProperty('API_URL');

    var options = {
        'method': 'post',
        'contentType': 'application/json',
        'payload': JSON.stringify(data)
    };
  
    var response = UrlFetchApp.fetch(api_url, options);
    Logger.log(api_url, options);
}

```
はい、これで実行！

![スクリーンショット 2020-12-17 20.22.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/537390/9c928b6e-eaed-32f1-f948-4cee80f3eee0.png)

いつも通り安定のGAS様です。頼もしい。こんな簡単に登録できるなんて。
Wi-Fiの海を爆速で飛び去ったAPIリクエストの影が一瞬だけ見えた気がします。

レスポンスはこんな感じ。チャンネルのサムネイル情報まで取得できるので、プリザンターにも登録できると幸せになれそうですが、幸せは各自で掴み取って下さい。

```
{kind=youtube#channelListResponse, etag=9EXpCxbbgVyC6FzVQ4LhCj6O7sE, items=[{kind=youtube#channel, statistics={viewCount=50991981, hiddenSubscriberCount=false, videoCount=72, subscriberCount=1680000}, etag=ovySG-awXF2czSJyFWnIeMLJDuc, snippet={title=Gawr Gura Ch. hololive-EN, publishedAt=2020-07-16T06:25:20.801877Z, description=A descendant of the Lost City of Atlantis, who swam to Earth while saying, "It's so boring down there LOLOLOL!" She bought her clothes (and her shark hat) in the human world and she really loves them. In her spare time, she enjoys talking to marine life.

For Inquiries
Cover Corp: http://cover-corp.com/
Official Twitter: https://twitter.com/hololive_En, country=JP, localized={title=Gawr Gura Ch. hololive-EN, description=A descendant of the Lost City of Atlantis, who swam to Earth while saying, "It's so boring down there LOLOLOL!" She bought her clothes (and her shark hat) in the human world and she really loves them. In her spare time, she enjoys talking to marine life.

For Inquiries
Cover Corp: http://cover-corp.com/
Official Twitter: https://twitter.com/hololive_En}, thumbnails={high={width=800.0, height=800.0, url=https://yt3.ggpht.com/ytc/AAUvwnhSSaF3Q-PyyTSis4EH6Cu8FZ32LNvkxI9Gl_rn=s800-c-k-c0x00ffffff-no-rj}, medium={url=https://yt3.ggpht.com/ytc/AAUvwnhSSaF3Q-PyyTSis4EH6Cu8FZ32LNvkxI9Gl_rn=s240-c-k-c0x00ffffff-no-rj, height=240.0, width=240.0}, default={height=88.0, url=https://yt3.ggpht.com/ytc/AAUvwnhSSaF3Q-PyyTSis4EH6Cu8FZ32LNvkxI9Gl_rn=s88-c-k-c0x00ffffff-no-rj, width=88.0}}}, id=UCoSrY_IQQVpmIRZ9Xf-y93g}], pageInfo={totalResults=1.0, resultsPerPage=5.0}}
```

で、ここで気づくわけです。別にYouTubeアナリティクスを見ればこんなのもっと詳しくわかるじゃないか、と。

違うんです。世は戦国時代なのです。油断すれば一瞬で寝首を掛かれるそんな世界なのです。
そんな世界に私達Vtuberは生きているのです。
アナリティクスは自分のチャンネルしか見れないのです。

先程のコードのchannelIdの部分を変更して実行すれば、ライバルたちの情報も登録することができるのです。
![スクリーンショット 2020-12-17 20.40.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/537390/10c6aaa7-c0d2-1404-9d89-388905f30778.png)

~~今回はめんどくｓ、~~皆さんの楽しみを残しておくために、そこまではやりませんが、監視対象のチャンネルIDをプリザンターに2,000件登録しておき、それを読み込んで日々の登録者数、再生回数を登録していけば、誰が話題にあがっているのか一目瞭然です。あとは潰せばいいのです。

すでにIDが登録されているチャンネル(プリザンターのレコード)は情報を更新していくという処理を書いてあげれば、たぶん、うまいことやれば更新履歴で日々の推移も見られるんじゃないのかな、と思います。保証は致しかねますが。件数が多いとごちゃごちゃしそうですからね。Metabaseなんかと連携するといろいろできそう。
まだまだアイディア次第で可能性は無限なのです。そんな世界に私達Vtuberは生きているのです。


## おわりに
なんだか駆け足でお送りしましたが手抜きだからではなく、師走だからです。
3回に渡ってGASを使ったプリザンター連携について書いてきましたが、もう少し時間があるなら、もっと深堀りしてみたかったなというのが正直な所です。だって、とても楽しかったですよ。
ビジネスアプリを作ることに特化しているプリザンターですが、そうは言ってもその汎用性は伊達ではなく、アイディア次第ではいろいろなお遊びも出来る可能性が無限大です。宇宙です。
まあ、今回のネタもお遊びテイストではありますが、最近ですと企業としてもプロモーションとして動画を配信することは少なくないと思いますので、普通にお仕事でも使えると思います。良かったら試してみて下さい。

それでは、ワタクシは今年はこれにて失礼します。皆様、しあわせなクリスマス🎄と新年🗻を。