Google広告の機会損失をPythonで可視化する実装
Google広告で「まだ伸ばせるはずなのに配信が頭打ち」と感じる場面は多い。その正体はたいてい機会損失、つまり出せたはずのインプレッションを取りこぼしている状態だ。管理画面でも数値は見えるが、複数アカウントを横断して毎日追うのは現実的でない。この記事では、インプレッションシェアをPythonで取得し、予算とランクどちらが原因かを自動で切り分ける実装を示す。読み終えれば、機会損失の可視化を定時実行に載せる下地ができる。 インプレッションシェアが機会損失を映す理由 インプレッションシェア(IS)は、出せたはずの表示回数のうち実際に出せた割合を示す。ISが60%なら、残り40%は何らかの理由で取りこぼしたことになる。つまりISは「配信の伸びしろ」を数値化した指標だ。運用者が本当に知りたいのは割合そのものより、失った40%の内訳である。 Google広告はこの内訳を2つに分けて提供する。予算不足で失った分と、広告ランク不足で失った分だ。前者は予算を積めば回収でき、後者は入札や品質の改善が要る。打ち手がまったく異なるため、混ぜて見てはいけない。 3つの指標で損失原因を切り分ける Google Ads APIには機会損失を切り分ける3指標がある。search_impression_share(取れた割合)、search_budget_lost_impression_share(予算で失った割合)、search_rank_lost_impression_share(ランクで失った割合)だ。この3つはおおよそ「IS+予算ロス+ランクロス≒100%」の関係になる。合計がほぼ100%に収まるので、内訳の検算にも使える。 判断はシンプルだ。予算ロスが大きいキャンペーンは、予算を積めば素直に配信が伸びる見込みが高い。ランクロスが大きいなら、入札引き上げか広告文・品質スコアの改善が先だ。数値で原因を特定してから動くので、感覚頼みの増額を避けられる。この切り分けの実データ運用は 広告の日予算を自動計算するPython実装 と組み合わせると効いてくる。 PythonとGoogle Ads APIで取得する手順 取得はGAQL(Google Ads Query Language)で書く。キャンペーン単位なら次の一行で3指標がまとめて取れる。SELECT campaign.na...