やりたいこと

今回は、今後Integromatの動画を作成するに当たり、YouTubeのIntegromatチャンネルがどのような動画を投稿しているかをチェックしたいという意図で、それらをGoogleシートに追加しようと思います。

実行後のGoogleスプレッドシートです。

やりたいこと

以下、見出し等の[数字]の数字は、モジュールの番号と対応しています。

YouTubeを検索[1]

まず、YouTubeでIntegromatチャンネルの動画の一覧を検索します。

IntegromatにはYouTubeのモジュールが用意されていないので、HTTPの「Make a request」モジュールから、YouTubeのAPIを呼びます。

APIは、YouTubeのDataAPIの「Search: list」を使います。

Search: list | YouTube Data API | Google Developers

必須パラメーターのpartの他、channelIdやmaxResultsを指定しようと思います。

「URL」には、YouTubeのリファレンスからコピーしたものを貼り付けます。

「Query String」にはリファレンスを参考に

  • key:<api key=""></api>
  • part:snippet
  • channelId:UC8KWRrf8wqyowmWhXJ9DRjQ(Integromat公式チャンネルの場合)
  • maxResults:50

を設定します。

また、「Parse response」をチェックし、レスポンスを処理しやすくします。

YouTubeを検索[1]

「API key」を取得するには、Google Cloud Platformでプロジェクトを作成し、YouTube Data APIを有効にする必要があるのですが、分からない方もぐぐればすぐに分かると思います。

「channelId」は、YouTubeのチャンネルページに移動した際のURL「https://www.youtube.com/channel/XXXX」 の「XXXX」部分です。

検索結果はデフォルトでは5つしか表示されませんが、「maxResults」を50とすることで、一度に50まで表示されるようにしています。

Router[13]

このルーターでは、まず上部の分岐のモジュールを実行し、完了次第、下部の分岐のモジュールを実行します。

ここでは、最初の50の動画については、下部の分岐で、51以降の動画については、上部の分岐でGoogleスプレッドシートに追加していきます。

Iterator[14]

まず、下部の分岐について見ていきます。

[1]の結果が配列として返ってくるので、その配列の一つ一つの要素の情報をGoogleスプレッドシートに追加するために、Iterator使って、配列をモジュールのまとまりに変換しています。

Iterator[14]

Googleスプレッドシートに追加[16]

予め用意しておいたGoogleスプレッドシートのカラムに、Iteratorで変換したモジュールの該当要素を追加していきます。

Googleスプレッドシートに追加[16]

Data storeにレコードを追加[7]

YouTubeの検索結果は一度に50が上限なので、51以降を見るには、その前の検索結果の「nextPageToken」を「pageToken」として、APIのクエリに含める必要があります。

「nextPageToken」は都度変わるので、最新のものをData storeで管理することにします。

始めに[1]の結果として出力される「nextPageToken」を追加します。

Data storeにレコードを追加[7]

Repeater[2]

[1]の結果で、全体でいくつの動画があり、1回の検索当たりいくつの動画が返ってくるかが分かる(今回の例では50)ので、それらと「ceil()」を使い、後何回、YouTubeを検索する必要があるかを計算します。

Repeater[2]

Data storeからレコードを獲得[10]

「Repeater」以降の全てのモジュールを、[2]で設定した回数繰り返すことになるので、その都度最新の「pageToken」で検索をできるよう、まずData storeから最新の「pageToken」を獲得します。

獲得する際には、「Key」を指定する必要があるので、[7]でレコードを追加した際のキーを使います。

Data storeからレコードを獲得[10]

YouTubeを検索(2回目以降)[3]

[1]同様ですが、新しく「pageToken」を追加しています。

YouTubeを検索(2回目以降)[3]

Data storeからレコードを更新[9]

[3]では新しい「nextPageToken」が出力されるので、最新の「pageToken」として保存します。

Data storeからレコードを更新[9]

Iterator[15]

[14]同様です。

Iterator[15]

Googleスプレッドシートに追加[11]

[16]同様です。

Googleスプレッドシートに追加[11]

以上、YouTubeで特定のチャンネルの一覧を検索し、Googleシートに追加するというシナリオでした。