gaql-query-patterns について
gaql-query-patternsは、一般的なPPC分析に使える読み取り専用のGoogle Ads Query Languageテンプレート集です。クエリ例が必要な分析担当者向けで、実行や結果の診断は別のツールやスキルが担います。
主な機能
- 01キャンペーン支出と進捗のクエリ
- 02インプレッションシェア分析テンプレート
- 03検索語句とキーワードのレポート
- 04広告とコンバージョンのクエリ
- 05地域・デバイス別の分析
- 06GAQLのフィールドと日付のガイド
活用シーン
- 01キャンペーン予算と進捗の確認
- 02費用が高く未コンバージョンの検索語句の発見
- 03キーワード品質スコアの監査
- 04アカウント全体のパフォーマンスレポート作成
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ fourteenwm/ ppc-ai-skills --skill gaql-query-patternsインストール後、Claude Code で/gaql-query-patternsを入力して読み込まれたか確認します。
同梱ファイルREADME.md
詳細
GAQL クエリパターン
一般的な PPC 分析タスク向けの、そのまま使える GAQL(Google Ads Query Language)クエリテンプレートです。
このスキルで意図的に対応していないこと
- クエリの実行。 これらはコピー&ペースト用のテンプレートであり、実行ツールではありません。実際に実行してエクスポートするには、お使いの API クライアント、Google Ads Scripts、または
google-ads-queryに貼り付けてください。 - データの変更。 すべてのテンプレートは読み取り専用の
SELECTであり、ここにあるものがアカウントを変更することはありません。 - 変更履歴クエリへの対応。 何がいつ変更されたかを取得するには、有限の期間と
LIMITが必要です。この機能はchange-history-checkerにあります。期間を指定しない変更クエリは実行できません。 - 結果の診断。 「用途」と「結果の解釈」の注記は分析の手がかりを示すものであり、実際の原因究明は診断スキル(たとえば、インプレッション シェアのクエリには
impression-share-diagnostics)で行います。
キャンペーンクエリ
過去 7 日間のキャンペーン費用分析
SELECT
campaign.id,
campaign.name,
campaign.status,
campaign.advertising_channel_type,
campaign.bidding_strategy_type,
campaign_budget.amount_micros,
campaign_budget.explicitly_shared,
metrics.cost_micros,
metrics.impressions,
metrics.clicks,
metrics.conversions,
metrics.conversions_value
FROM campaign
WHERE segments.date DURING LAST_7_DAYS
ORDER BY campaign.name
用途: 最近の費用分析、予算の使用状況、キャンペーンの健全性チェック
月初から現在までのペース配分
SELECT
campaign.id,
campaign.name,
campaign_budget.amount_micros,
metrics.cost_micros
FROM campaign
WHERE segments.date DURING THIS_MONTH
ORDER BY campaign.name
用途: 月間ペース配分の計算、予算の追跡
キャンペーン設定の監査
SELECT
campaign.id,
campaign.name,
campaign.status,
campaign.advertising_channel_type,
campaign.bidding_strategy_type,
campaign.target_cpa.target_cpa_micros,
campaign.target_roas.target_roas,
campaign_budget.amount_micros,
campaign_budget.explicitly_shared
FROM campaign
WHERE campaign.status = 'ENABLED'
用途: 設定の監査、入札戦略の確認、予算の見直し
インプレッション シェア
検索インプレッション シェア分析
SELECT
campaign.id,
campaign.name,
campaign.advertising_channel_type,
metrics.search_impression_share,
metrics.search_budget_lost_impression_share,
metrics.search_rank_lost_impression_share,
metrics.impressions
FROM campaign
WHERE segments.date DURING LAST_7_DAYS
AND campaign.advertising_channel_type IN ('SEARCH', 'PERFORMANCE_MAX')
ORDER BY metrics.search_budget_lost_impression_share DESC
用途: 費用が消化されない原因の診断、予算の制約と品質の問題の特定
結果の解釈:
- 予算によるインプレッション シェア損失が大きい → より多くのインプレッションを獲得できるよう予算を増やします
- 広告ランクによるインプレッション シェア損失が大きい → 品質または関連性の問題です(予算の問題ではありません)
- 両方とも大きい → 主な制約は予算ですが、品質にも改善が必要です
検索語句
検索語句レポート(過去 30 日間)
SELECT
search_term_view.search_term,
campaign.name,
ad_group.name,
metrics.impressions,
metrics.clicks,
metrics.cost_micros,
metrics.conversions,
search_term_view.status
FROM search_term_view
WHERE segments.date DURING LAST_30_DAYS
AND metrics.impressions > 0
ORDER BY metrics.cost_micros DESC
用途: 除外キーワードの発見、検索語句の監査、検索意図の分析
費用が大きくコンバージョンに至っていない検索語句
SELECT
search_term_view.search_term,
campaign.name,
metrics.clicks,
metrics.cost_micros,
metrics.conversions
FROM search_term_view
WHERE segments.date DURING LAST_30_DAYS
AND metrics.conversions = 0
AND metrics.cost_micros > 0
ORDER BY metrics.cost_micros DESC
用途: 無駄な費用の発見、除外キーワード候補の特定
キーワード
品質スコア付きキーワードのパフォーマンス
SELECT
ad_group.name,
ad_group_criterion.keyword.text,
ad_group_criterion.keyword.match_type,
ad_group_criterion.quality_info.quality_score,
ad_group_criterion.quality_info.creative_quality_score,
ad_group_criterion.quality_info.post_click_quality_score,
ad_group_criterion.quality_info.search_predicted_ctr,
metrics.impressions,
metrics.clicks,
metrics.cost_micros,
metrics.conversions
FROM keyword_view
WHERE segments.date DURING LAST_30_DAYS
AND ad_group_criterion.status = 'ENABLED'
ORDER BY metrics.cost_micros DESC
用途: 品質スコアの監査、キーワードのパフォーマンス分析
配信されていないキーワード(インプレッション数ゼロ)
SELECT
campaign.name,
ad_group.name,
ad_group_criterion.keyword.text,
ad_group_criterion.keyword.match_type,
ad_group_criterion.status,
metrics.impressions
FROM keyword_view
WHERE segments.date DURING LAST_180_DAYS
AND campaign.status = 'ENABLED'
AND ad_group.status = 'ENABLED'
AND ad_group_criterion.status = 'ENABLED'
AND metrics.impressions = 0
用途: 整理対象の機能していないキーワードの発見、アカウントの健全性維持
広告
RSA のパフォーマンス
SELECT
campaign.name,
ad_group.name,
ad_group_ad.ad.id,
ad_group_ad.ad.responsive_search_ad.headlines,
ad_group_ad.ad.responsive_search_ad.descriptions,
ad_group_ad.ad_strength,
metrics.impressions,
metrics.clicks,
metrics.conversions,
metrics.cost_micros
FROM ad_group_ad
WHERE segments.date DURING LAST_30_DAYS
AND ad_group_ad.ad.type = 'RESPONSIVE_SEARCH_AD'
AND ad_group_ad.status = 'ENABLED'
ORDER BY metrics.impressions DESC
用途: 広告のパフォーマンス確認、RSA の最適化
コンバージョン
コンバージョン アクションの一覧
SELECT
conversion_action.id,
conversion_action.name,
conversion_action.type,
conversion_action.status,
conversion_action.category,
conversion_action.value_settings.default_value,
conversion_action.counting_type,
conversion_action.attribution_model_settings.attribution_model
FROM conversion_action
WHERE conversion_action.status = 'ENABLED'
ORDER BY conversion_action.name
用途: コンバージョン トラッキングの監査、設定に誤りのあるアクションの特定
アクション別のコンバージョン パフォーマンス
SELECT
segments.conversion_action_name,
segments.conversion_action_category,
metrics.conversions,
metrics.conversions_value,
metrics.all_conversions,
metrics.cost_micros
FROM campaign
WHERE segments.date DURING LAST_30_DAYS
ORDER BY metrics.conversions DESC
用途: どのコンバージョン アクションが発生しているか、値がどのように分布しているかの把握
地域別パフォーマンス
SELECT
geographic_view.country_criterion_id,
geographic_view.location_type,
campaign.name,
metrics.impressions,
metrics.clicks,
metrics.cost_micros,
metrics.conversions
FROM geographic_view
WHERE segments.date DURING LAST_30_DAYS
ORDER BY metrics.cost_micros DESC
用途: 地域別の入札単価調整、地域ターゲティングの監査
デバイス別パフォーマンス
SELECT
campaign.name,
segments.device,
metrics.impressions,
metrics.clicks,
metrics.cost_micros,
metrics.conversions,
metrics.average_cpc
FROM campaign
WHERE segments.date DURING LAST_30_DAYS
ORDER BY campaign.name, segments.device
用途: デバイス別の入札単価調整、モバイルとデスクトップの分析
アカウントレベルの概要
SELECT
customer.id,
customer.descriptive_name,
metrics.cost_micros,
metrics.impressions,
metrics.clicks,
metrics.conversions,
metrics.conversions_value
FROM customer
WHERE segments.date DURING LAST_30_DAYS
用途: アカウントの概要把握、経営層向けレポート
日付範囲のリファレンス
| キーワード | 意味 |
|---|---|
YESTERDAY | 昨日のみ |
TODAY | 今日のみ |
LAST_7_DAYS | 過去 7 日間 |
LAST_14_DAYS | 過去 14 日間 |
LAST_30_DAYS | 過去 30 日間 |
THIS_MONTH | 今月の初日から現在まで |
LAST_MONTH | 前月(暦月) |
THIS_WEEK_MON_TODAY | 今週(月曜日から今日まで) |
主なフィールドに関する注意事項
マイクロ単位で返されるコンバージョン値
API は金額をマイクロ単位(1,000,000 = $1)で返します。
50000000 micros = $50.00
1234567 micros = $1.23
ユーザーに表示する際は、必ず 1,000,000 で割ってください。
インプレッション シェアは小数で返されます
API はインプレッション シェアを**小数(0.0~1.0)**で返します。パーセンテージではありません。
- API の値
0.2464= 実際のインプレッション シェア 24.64% - 表示する際は、必ず 100 を掛けてください
指標には日付によるセグメント化が必要です
metrics.* フィールドを含むクエリには、必ず WHERE segments.date 句を含める必要があります。これがない場合、クエリは失敗します。
インプレッション シェアは検索/PMax のみ
search_impression_share、search_budget_lost_impression_share、search_rank_lost_impression_share は、検索キャンペーンと Performance Max キャンペーンでのみ利用できます。
AND と OR
GAQL は OR をサポートしていません。代わりに IN を使用してください。
-- Wrong
WHERE campaign.status = 'ENABLED' OR campaign.status = 'PAUSED'
-- Correct
WHERE campaign.status IN ('ENABLED', 'PAUSED')
他のスキルを読み込むタイミング
| スキル | タイミング |
|---|---|
google-ads-query | これらのテンプレートをアカウントに対して実行し、結果を CSV にエクスポートする場合。このスキルがテンプレートを提供し、そちらが実行を担います |
change-history-checker | 「何がいつ変更されたか」を確認するクエリの場合。これらのクエリには有限の期間(90 日/30 日)と、一般的なテンプレートには含まれない LIMIT が必要です |
impression-share-diagnostics | インプレッション シェアに関するクエリを解釈する場合。検索 IS、予算損失 IS、ランク損失 IS の根本原因分析は、そちらで行います |
いくつかのスキルでは、独自のテンプレートだけでは足りなくなると、これらのテンプレートを利用します。 underspending-investigation、budget-recommendation-calculator、mcc-hack-audit はいずれも、カスタム GAQL についてここを参照しています。