Aikの技術日記

技術的な進捗とか成果とかを細々と投稿するブログです。時々雑記も。

Youtube Analytics and Reporting API使ってみた - Part3:Youtube Reporting API編

※当記事の情報は、執筆当時(2023/05/31)時点のものです。
それ以降の最新情報については、公式Docsを参照してください。

はじめに

こんにちは、筆者です。

前回は「Youtube Analytics API編」として、2APIの片割れYoutube Analytics API当について深く見ていきました。
今回は「Youtube Reporting API編」と題して、Youtube Reporting APIの深掘り…をしようと思いましたが…。

前回の記事執筆でだいぶ気力を持っていかれちゃったので、詳細な深掘りはせず…。
簡単な概要と、「Youtube Analytics APIと比較してどう異なるか」に着目して見ていこうかと。
((データを取るという目的なら、どちらのAPI使っても変わらないでしょうしね…。

このため宣伝っぽくなりますが、当記事はPart1,2を読んでる前提で執筆しています。
まだ読んでない方は読むことをお勧めします…。

それではいきましょう。

Youtube Reporting API概要

基礎知識編で少し触れたように、
Youtube Reporting APIは「データを非同期で.csvファイル形式で取得」するものとなります。

また、Youtube Analytics APIではデータ取得時に「ディメンション」と「メトリクス」の組み合わせパターンを考えないといけないですが…。
APIでは、APIが規定するレポートを指定するだけでデータを取れます。

これらを踏まえると、データ取得の流れとしては:

  1. reportTypes.listAPIを発火、どんなレポートが取れるか知る
  2. ↑のレポートを指定しjob.createAPIを発火、レポート作成リクエストを送付(ジョブ作成)
  3. jobs.reports.listAPIを発火、レポートを取得(ジョブ結果を取得)

…と言うふうになります。
ディメンションやメトリクスの組み合わせを考えないといけないYoutube Analytics APIとは異なり、
レポートを指定するだけでとりあえずデータが取れるのは嬉しいですね。

取得データの対象期間について

ここで当APIの重要な注意点をば…。
APIでは、なんと取得データの期間設定ができません。

そもそも集計データの日付指定の概念が特殊(?)で、
レポート作成リクエストを発火すると、APIサーバー側にて「その日から1日に1回、指定したレポートのデータ(csvファイル)を集計する」処理が行われ…。
この集計したデータを、後から取得すると言う感じになります。

集計処理は「リクエストを発火したその日から」というのがミソで、
要は取得できるデータは「レポート作成リクエストを発火した日以降のデータしか取れない」のです…。

おまけに、生成されたデータのダウンロード期限も決まっており…生成されてから24時間となってます。
1日1回毎日実行してデータを取っていくみたいな、完全にバッチ処理向けのAPIですね…。

お次は当APIで叩けるAPI一覧を見ていきましょう。

API一覧

Youtube Reporting APIで叩けるAPIは以下となります:
※執筆当時(2023/06/02)時点では、これ以外のAPIはありません

  • reportTypes.list
    • レポート作成時に指定可能な「レポート」の種別(reportType)を取得
  • job.create
    • reportTypeを指定し、レポート作成のリクエスト(=ジョブ)を送付
  • job.list
    • 現在のレポート作成リクエスト(=ジョブ)の一覧を取得
  • job.get
    • jobIdを指定し、レポート作成リクエスト(=ジョブ)の詳細を取得
  • job.delete
    • jobIdを指定し、レポート作成リクエストを削除
    • 削除すると、その日以降レポートは毎日集計されなくなる
  • job.reports.list
    • jobIdを指定し、レポート作成リクエストの結果を取得
    • CSVダウンロードURLはこのAPIから把握可能
  • job.reports.get
    • reportIdを指定し、レポート作成リクエストの結果詳細を取得

APIの種類は多いですが、多分メインで使うのは「reportTypes.list」「job.create」「job.reports.list」になってくるかと。
具体的には:

  1. reportTypes.listで自チャンネルで取得できるレポート種別を把握して
  2. レポート種別を指定しjob.createで毎日データ集計するようリクエストして(ジョブ登録して)、jobIdを取得
  3. jobIdを指定しjob.reports.listでCSVダウンロードURLを取得&ダウンロード
    • 以降、1日1回CSVダウンロードし毎日データを貯めていく

…みたいな流れになりそうです。
お次はこの3つのAPIについて詳細に見ていきましょう。

なお、基本情報は箇条書きしますが、リクエストやレスポンスはTypeScriptのInterface形式で示します。

API詳細:reportTypes.list

基本情報:

  • GETリクエス
  • エンドポイント: https://youtubereporting.googleapis.com/v1/reportTypes

リクエストパラメータ、レスポンス内容(長いので折りたたみ)

API詳細:job.create

基本情報:

  • POSTリクエス
  • エンドポイント: https://youtubereporting.googleapis.com/v1/jobs

リクエストパラメータ、レスポンス内容(長いので折りたたみ)

API詳細:job.reports.list

基本情報:

  • GETリクエス
  • エンドポイント: https://youtubereporting.googleapis.com/v1/jobs/{jobId}/reports
    • jobId: 取得対象のジョブ

リクエストパラメータ、レスポンス内容(長いので折りたたみ)

Youtube Analytics APIと比較して

ここからは、Youtube Analytics APIと比較してどう異なるかについて見ていきましょう。
とはいっても、これまでちょくちょく比較してきた気はしますがね…。

今回はAnalytic APIと比較したメリット/デメリットという形式で記載していこうかと。
ばちばちに主観的意見が入るので、その点ご了承ください…。

まずメリットとしては:

  • レポート種別を指定するだけで取得可能
    • ディメンション、メトリクスの知識不要
    • とりあえずデータを取りたいだけであれば、Reporting APIの方が楽
  • APIの仕様がわかりやすい
    • Analytics APIqueryというAPIでなんでも出来る分、自由度が高すぎて何が出来るかわかりにくい
    • Reporting APIはデータ生成の流れを抑えれば、各APIの仕様は複雑ではない

デメリットとしては:

  • データをフィルタリング不可能
    • 生成されたCSVデータを自由にカスタムしてね形式
  • ジョブ作成日以降のデータしか取得できない
    • 過去のデータ分析をするなら、Youtube Reporting APIは使用不可能
  • データ生成されてから24時間以内にCSVデータをDLしないといけない
    • とりあえず生成させておいて、後からまとめてDLが不可

…という感じでしょうか。

Youutube Reporting APIでデータを取得する流れ的に、手動運用で活用するのはほぼ無理と言ってもいいでしょうね…。
やるとしたら日に一回起動するバッチ形式の運用しかなさそうです。

最後に余談として…。
実はAnalyticsとReportingとでは、取得可能な値のプロパティ名が微妙に異なります。
例を以下に:

  • Analytics API: audienceType
    • Reporting API: audience_retention_type
  • Analytics API: contentOwner
    • Reporting API: content_owner_id
  • Analytics API: day
    • Reporting API: date

単にキャメルケースとローワーケースの違いかと思いきや、全然異なる単語になってたりするのが厄介ですね…。

CSVデータをまんま参照するだけなら問題ないですが、
例えばCSVデータを分析する際、Analytics APIの取得結果とReporting APIの取得結果を合算する際は、
このプロパティの細かい差異が悩みの種になりそうです…。

おわりに

今回はYoutube分析の鉄板APIYoutube Analytics and Reporting API」について、
Youtube Reporting APIについて深掘りし見ていきました。

調査して思ったこととしては、
過去の期間が取れない仕様が痛すぎるなと…。

取得の流れも手動運用ではだいぶ厳しそうですし、
バッチ化やツール化を前提としたAPIだなという印象です。

ただ、レポート種別さえ指定すればデータが取得できる気軽さはありがたいなと。
Analytics APIの方は、ディメンションやメトリクスの項目を深く知らないとまともに使いこなせませんからね…。

日に沢山のアクセスがあるYoutuberさんなら、
Youtube Reporting APIで得たCSVファイルを元に、ディメンションやメトリクスの値について学んでいく…みたいな使い方もできそうに感じました。

ともあれ、これでYoutube Analytics and Reporting APIについてまとめたいことはまとめられたので…。
本シリーズ記事はこれで最後にしたいと思います。

今後は自作ツールとしてYoutube Analytics APIを中心に分析ツールを作る予定ですが…。(ネットには非公開予定)
その過程で良さげなクエリを組み立てられたら、それをまとめた記事をおまけとして作る…かもしれません。
((正直ここまででかなり気力持ってかれたので、そこまでやるかは微妙ですが…。

ともあれ、ここまで見てくださって本当にありがとうございます。
当シリーズ記事が、何かの一助になれば幸いです…それでは|д゚*)