Google広告だけBigQueryに入れて満足していた

GA4とGoogle広告の連携は管理画面からポチポチやるだけで完了する。「これでデータ基盤は完成だ」と思い込んでいた。ところがクライアントの広告アカウントを見ると、月の広告費のうち3〜4割はYahoo!広告に使っている。つまり、売上の3割に関わるデータを分析対象から外していた。
BigQueryにGoogle広告のデータしかなければ、「Google広告のCPAが高い」と判断しても、Yahoo!広告と比較できない。本当にGoogle広告のCPAが高いのか、それとも業界全体のトレンドなのか、判断材料がない状態で広告費の配分を決めていたことになる。
この記事では、Yahoo!広告のレポートデータをn8n経由でBigQueryに自動連携する手順と、Google広告のデータと横断して分析する方法を解説する。
なぜYahoo!広告の連携は後回しにされるのか
理由はシンプルで、Google広告に比べて連携のハードルが高いからだ。
Google広告にはBigQuery Data Transfer Serviceという公式連携がある。管理画面で数クリック、待つこと数時間でデータが流れ始める。一方のYahoo!広告にはそういった仕組みがない。APIを叩いてレポートデータを取得し、それをBigQueryに書き込む——このパイプラインを自分で組む必要がある。
「APIを叩く」と聞くとプログラマーの仕事に聞こえるが、n8nを使えばコードは1行も書かない。HTTP Requestノードがやってくれる。
全体のアーキテクチャ

先に完成形を示す。
- Yahoo!広告 API → HTTP Request(n8n)→ データ整形(n8n)→ BigQuery Insert(n8n)
- GA4 → BigQueryエクスポート(自動連携)
- Google広告 → Data Transfer Service(自動連携)
GA4はBigQueryエクスポート、Google広告はData Transfer Service。Yahoo!広告だけがn8n経由になる。データの粒度(日別・キャンペーン別・広告グループ別)を揃えておけば、SQLで横断分析ができる。
n8nワークフローの構成
1. Scheduleトリガー
毎朝7時に自動実行する。Yahoo!広告のレポートデータは前日分が翌朝に確定するため、朝の実行で前日分を取得する設計だ。
2. HTTP RequestノードでYahoo!広告APIを呼ぶ
Yahoo!広告のReporting APIを使う。エンドポイントはレポートの作成→ダウンロードの2段階。
ステップ1:レポート定義の作成
レポートに含めるフィールド(キャンペーン名・インプレッション・クリック・コスト・コンバージョン等)と期間を指定してPOSTリクエストを送る。
ステップ2:レポートのダウンロード
ステップ1で返ってきたレポートIDを使ってGETリクエストを送り、CSV形式のデータを取得する。
認証はOAuth 2.0。Yahoo!ビジネスマネージャーでアプリケーションを登録し、クライアントIDとシークレットを取得しておく。n8nのCredentials機能にOAuth2の設定を保存すれば、トークンのリフレッシュも自動で行われる。
3. データ整形
Yahoo!広告APIから返ってくるCSVのカラム名をBigQueryのテーブルスキーマに合わせて変換する。n8nのSet/Editノードでマッピングするだけだ。
ここで注意点が1つ。Yahoo!広告の費用は「税抜」で返ってくることがある。Google広告は税込で出てくるから、そのまま比較すると数字がズレる。どちらかに統一するルールを決めておく。
4. BigQuery Insertノード
整形済みのデータをBigQueryの yahoo_ads_reports テーブルに書き込む。テーブルスキーマの主なカラムは以下の通り。
- date(DATE):レポート日
- campaign_name(STRING):キャンペーン名
- campaign_id(STRING):キャンペーンID
- impressions(INTEGER):表示回数
- clicks(INTEGER):クリック数
- cost(FLOAT):費用(税込)
- conversions(FLOAT):コンバージョン数
横断分析で見えてくるもの

データが揃ったら、SQLで横断分析をかける。Google広告とYahoo!広告のキャンペーンをCPA順に並べるクエリを1本叩けば、「Google広告の指名キャンペーンはCPA 3,000円だけど、Yahoo!広告の同じキャンペーンはCPA 5,500円」——こういう差が一目でわかる。
以前は、Google広告の管理画面とYahoo!広告の管理画面をそれぞれ開いて、スプレッドシートに手動で転記して、横並びで比較していた。それが「SQLを1本叩く」に変わった。しかも毎朝自動でデータが入ってくるから、いつでも最新の数字で比較できる。
既にn8nを使っているなら30分で終わる
正直、ゼロから構築すると半日くらいかかる。Yahoo!広告のAPI申請、OAuth認証の設定、BigQueryのテーブル作成——初回はどうしても時間が取られる。
しかし既にn8nでGoogle広告やSearch Consoleのパイプラインが動いているなら、それをコピーしてHTTP Requestの宛先をYahoo!広告APIに変えるだけだ。認証部分とデータ整形だけ調整すれば、30分もあれば動く。
重要なのは「全部のデータが1箇所にある」状態を作ることだ。GA4、Google広告、Yahoo!広告、Search Console——これらが全部BigQueryに入っていれば、「どの施策が一番効率よくCVを取れているか」がSQLで横断的にわかる。
データが別々の管理画面に散らばっている限り、正確な比較はできない。1箇所に集めることそのものが、分析の精度を上げる最大の施策だ。
あわせて読みたい


