Looker Studio利用や、Tableauの利用の為に、Serch ConsoleのデータをBigQueryへエクスポートしたいということがあると思います。しかし、「設定したはずなのにデータが取り込まれてない!」とか、設定画面を進めていく中で「なにこれ?」というエラーメッセージが出てきてしまい、手が止まってしまうこともあると思います。Googleのヘルプではいまいちわからん、ということもあると思うので、まとめてみました。
できるだけ皆さんの問題が解決できるようにわかりやすく書きたいと思います。
エラーの原因特定
BigQueryにデータが正常に取り込まれていない、と感じたら、SerchConsoleの設定にある一括データ エクスポートの画面を確認します。

上記は特に問題がない場合の状態ですが、エラーがある場合、ここに以下のようなエラー内容が表示されます。

※画像引用:https://support.google.com/webmasters/thread/205323940/new-bulk-data-export-feature-for-search-console-not-working?hl=en
リンクが張られたSearuch Consoleの公式ヘルプは以下の通りですが、とても簡潔で「どういう事?」となりがちです。
https://support.google.com/webmasters/answer/12919198?hl=ja
記事の後半でもうすこし各エラーについて詳しく説明しますが、エラーの原因は主に以下の3つに分けられます。
●権限が足りない(Google Cloud側の設定)
個人的には権限周りの問題が最もよく遭遇するエラーかつ、最も厄介だと思っています。
設定時にGoogleCloudのIAM設定で、Search Consoleの「 ”search-console-data-export@system.gserviceaccount.com
”」の追加を忘れていたり、権限設定をミスしていたり、組織のポリシーに引っかかっていることで発生します。
Googleのシステムが自動で操作を行うためのロボットのようなアカウント(サービスアカウント
といいます。こういうやつです。 ”search-console-data-export@system.gserviceaccount.com
”)が存在します。このロボットに、データを保管する倉庫(BigQuery)への書き込みを許可してあげる必要があります。
●設定が間違っている(プロジェクトやAPIの状態)
データを保管する「場所の指定」が間違っていたり、データの保管場所のステータスが誤っている状態です。
Google Cloudでは、作業場所を「プロジェクト」という単位で管理します。また、BigQueryなどの機能は「API」と呼ばれ、スイッチをオンにしないと使えません。
●名前の指定が違う(BigQueryでの実行時に発生する、リソースの指定ミス)
プロジェクトの名前や、データが入っているテーブル(表)の名前を、正しく指定できていない状態です。特に、データを分析しようとした際に、テーブルの名前を間違うと「見つかりません」というエラーが出ます。
searchconsoleのがプロジェクトの名前や、データが入っているテーブル(表)の名前を、正しく指定できていない状態です。特に、データを分析しようとした際に、テーブルの名前を間違うと「見つかりません」というエラーが出ます。
ケース別・エラー解決方法
ケース1:権限がありません (Permission Denied)
まずは”search-console-data-export@system.gserviceaccount.com
”のアカウント(Serch console のデータをBigQueryに書き込んでくれるアカウント)の追加が漏れている(もしくは権限設定が間違っている)場合の修正です。
1.Google Cloudコンソールにログインします。画面左上のナビゲーションメニュー(ハンバーガーメニュー☰)から [IAMと管理] > [IAM] を選択します。

2.画面上部にある [アクセスを許可] ボタンをクリックします。
3.「新しいプリンシパル」という入力欄に、以下をコピーして貼り付けます。 search-console-data-export@system.gserviceaccount.com

「ロールを選択」という欄をクリックし、検索窓に「BigQuery データ編集者」と入力して選択します。
【ステップアップ:コマンドラインでの解決】
CUIでの操作に慣れている方向けの方法です。
# ▼自分のプロジェクトIDを設定
gcloud config set project YOUR_PROJECT_ID
# ▼以下のコマンドを実行して、権限を付与
gcloud projects add-iam-policy-binding YOUR_PROJECT_ID \
--member="serviceAccount:search-console-data-export@system.gserviceaccount.com" \
--role="roles/bigquery.dataEditor"
ケース2:Google Cloud のドメイン制限ポリシー/Cloudドメインの制限に関するポリシーによって権限が拒否されました。
Google Cloud Platform (GCP) で設定されている「ドメインで制限された共有 (constraints/iam.allowedPolicyMemberDomains)」という組織ポリシーで、外部ドメインに制限が与えられていることが原因です。
Search ConsoleからBigQueryへデータをエクスポートする際、Googleは search-console-data-export@system.gserviceaccount.com
というサービスアカウントを使用します。このサービスアカウントは、あなたの組織のドメイン(例: @example.com
)には所属していません。
そのため、組織ポリシーで「自社ドメインのみ許可」のような制限がかけられていると、このGoogle管理のサービスアカウントへの権限付与が拒否され、エラーが発生してしまいます。
解決の前の注意点
この問題を解決するには、組織ポリシーの設定を見直し、Search ConsoleのサービスアカウントがBigQueryプロジェクトにアクセスできるようにする必要があります。組織ポリシーの変更は、組織全体のセキュリティに影響を与える可能性があります。もし自分が管理者ではない場合は、必ず事前に組織のGoogle Cloud管理者に相談し、承認を得た上で作業を行うか、管理者に作業を依頼してください。
1.Google Cloud Consoleにログインし、データエクスポート先のBigQueryプロジェクトが含まれる組織・プロジェクトを選択します。

2.ナビゲーションメニューから「IAMと管理」>「組織のポリシー」を選択します。
3.ポリシーのリストが表示されるので、フィルターにポリシーID constraints/iam.allowedPolicyMemberDomains
を入力して検索します。
見つかったポリシーが「ドメインで制限された共有」です。
4.このポリシーがどこで設定されているか(ポリシーのソース)を確認します。

例えば以下の状態の場合、許可の項目に紐づくユーザーやサービスアカウントのみしか許可されないように制限されています。これにより、Serch console のアカウントが拒絶されていると考えられます。

上記を下記のようになるように変更します。

親のポリシーを継承
組織全体や上位のフォルダで設定されたポリシーが適用されています。この場合、編集はその親リソースで行う必要があります。
このリソースに固有のポリシー
プロジェクトレベルで直接ポリシーが設定(または上書き)されています。
5.ポリシーを編集します。最も推奨されるのは、影響範囲を限定できるプロジェクト単位での制限緩和です。
「ポリシーを管理」を選びます。

推奨: プロジェクト単位での制限緩和
この方法では、組織全体のポリシーは維持しつつ、Search Consoleのデータエクスポートを行う特定のプロジェクトに対してのみ、ポリシーを上書きして制限を緩めます。

「ポリシーのソース」:親のポリシーをオーバーライドする
「ポリシーの適用」:交換
「ルール」:既存のルール(例: 特定の顧客IDのみ許可)があれば、それを削除
「ルールの追加」:「許可/拒否」で「許可」を選択。

「ポリシー値」:「すべて許可」
以上の設定で、「ポリシーを設定」をクリックして保存します。
これで、このプロジェクト内では、Search Consoleのサービスアカウントを含むすべてのプリンシパルにIAMロールを割り当てられるようになります。
参考: 組織/フォルダレベルでの制限緩和(影響範囲に注意!)
もしプロジェクト単位でのオーバーライドが組織の運用上難しい場合や、複数のプロジェクトで同様の設定が必要な場合は、組織全体または上位フォルダレベルでポリシーを編集することも考えられます。
この場合、siteengine.co.jp のような組織/フォルダレベルのポリシー編集画面で、上記と同様に「すべて許可」のルールを設定するか、「ポリシーのソース」で「Googleで管理されるデフォルト値」(通常は制限なし)に戻すことを検討します。ただし、この変更は配下のすべてのプロジェクトに影響するため、より慎重な判断が必要です。
なぜ「@system.gserviceaccount.com ドメインのみ」の許可は難しいの?
「search-console-data-export@system.gserviceaccount.com だけをピンポイントで許可したい」と考えるかもしれません。しかし、constraints/iam.allowedPolicyMemberDomains ポリシーは基本的に「顧客ID」(Google WorkspaceやCloud Identityの組織ID)ベースでドメインを制限する仕組みです。Google管理のサービスアカウントが使用する @system.gserviceaccount.com のようなドメインを、顧客IDとは別に特定のドメインとして細かく許可リストに追加する標準的な機能は、このポリシーには通常ありません。そのため、「すべて許可」という設定が現実的な解決策となることが多いのです。
ポリシー変更のリスクと注意点
「ドメインで制限された共有」ポリシーを緩和することには、以下のようなセキュリティリスクが伴います。
●承認されていない外部ユーザー/サービスアカウントへの権限付与のリスク: 誤って、または悪意を持って、組織外のエンティティにリソースへのアクセス権を付与してしまう可能性があります。
●内部不正や設定ミスのリスク増大: IAM権限設定時のヒューマンエラーの影響が大きくなる可能性があります。
●コンプライアンス違反のリスク: 厳格なアクセス制御が求められる場合に、要件を満たせなくなる可能性があります。
これらのリスクを理解し、以下の点に注意してください。
最小権限の原則: ポリシーを緩和した後も、個々のIAMロールの割り当ては必要最小限に留めましょう。
定期的な監査: 定期的にIAM設定やCloud Audit Logsを確認し、意図しない権限付与がないか監視しましょう。
管理者との連携: 必ず組織のセキュリティポリシーを遵守し、管理者と連携して作業を進めてください。
ケース3:プロジェクトが見つかりません (Project Not Found)
「指定されたプロジェクトが見つかりません」という、シンプルなエラーです。正しいプロジェクトの「ID(識別番号)」を、Search Consoleに教えてあげましょう。
1.Google Cloudコンソールのホーム画面を開きます。
2.画面上部に表示されているプロジェクト名の部分をクリックすると、プロジェクトの一覧が表示されます。

3.連携したいプロジェクトの行にある [ID] の文字列を正確にコピーします。(プロジェクト名とIDは違うので注意!)

4.Search Consoleに戻り、[設定] > [エクスポート] を開きます。
5.BigQueryの設定画面で、先ほどコピーした正しいプロジェクトIDを貼り付けて設定を更新します。
【コマンドラインでの解決】
コマンドで、現在どのプロジェクトIDで作業しているかを確認できます。
# ▼現在設定されているプロジェクトIDを確認
gcloud config get-value project
# ▼アクセス可能なプロジェクトの一覧とそれぞれのIDを確認
gcloud projects list
ケース4:BigQueryでのクエリ実行時のエラー (Table Not Found)
データは無事に送られているはずなのに、BigQueryでデータを確認しようとすると「テーブルが見つかりません」と言われてしまうケースです。
エラーは前述のSearch Consoleの画面ではなく、BigQueryのクエリ入力画面の下にエラーの履歴として表示されます。
【主な解決策(SQLの修正)】
これは、分析のための命令文(SQLクエリ)に、少し工夫を加えることで解決します。
1.テーブル名を再確認: BigQueryの画面の左側「エクスプローラ」から、自分のプロジェクト > searchconsole
と辿り、テーブル名(例: searchdata_site_impression
)が正しいか確認します。

2.BigQueryの右スペース、上部にあるタブのなかから、エラーのあったクエリを探し、クエリを修正します。

「パーティション」を意識する: BigQueryに送られるデータは、日付ごとに整理された巨大な本棚のようなものです。この「日付の棚」をパーティションと呼びます。分析の際は、「いつの棚を調べたいか」を指定することで、素早く、そして料金を節約しながらデータを取り出せます。
【SQLの記述例】
以下の例のように、WHERE句に_PARTITIONTIMEという特別な言葉を使って日付を指定するのがお作法です。
SELECT
query,
SUM(impressions) AS total_impressions
FROM
-- ▼ `YOUR_PROJECT_ID`の部分は自分のものに書き換える
`YOUR_PROJECT_ID.searchconsole.searchdata_site_impression`
WHERE
-- ▼ この3行が重要!「過去7日間」の棚だけを探す、という命令
_PARTITIONTIME BETWEEN TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 7 DAY)
AND CURRENT_TIMESTAMP()
GROUP BY
query
ORDER BY
total_impressions DESC;
【日付の指定が重要な理由】
BigQueryはスキャンしたデータ量に応じて料金がかかります。日付を指定しないと、保存されている全期間のデータをスキャンしてしまい、料金が高くなる可能性があります。_PARTITIONTIMEで範囲を指定することは、効率的なデータ分析の基本テクニックなのです。
Google Helpページの解説
ここまで紹介した以外にも、エラーメッセージは存在します。search consoleで出力されるエラーの解説をできるだけわかりやすくまとめました。
1. Cloud プロジェクトが見つからない
●エラーメッセージの例: Cloud project not found
●どんな状態? Search Consoleが、あなたが指定したデータの送り先である「Google Cloudプロジェクト」を見つけられない状態です。「プロジェクトID(住所のようなもの)を間違えて入力している」か、「そもそもそのプロジェクトが存在しない」場合に発生します。
●どうすればいい?
・Google Cloudコンソールで、正しいプロジェクトIDをコピーします。
・Search Consoleの一括データエクスポート設定画面に戻り、コピーしたIDを正確に貼り付け直してください。
2. BigQuery API が有効になっていない
●エラーメッセージの例: BigQuery API not enabled
●どんな状態? プロジェクトには入れるようになりましたが、データを実際に受け取るための「BigQueryという機能」そのものがオフになっている状態です。
●どうすればいい? Google Cloudの「APIとサービス」というメニューで「BigQuery API」を検索し、「有効にする」ボタンをクリックしてください。
3. 請求先情報が設定されていない
●エラーメッセージの例: Billing info not configured for Cloud project
●どんな状態? BigQueryの利用には、たとえ無料枠の範囲内であっても、支払い元となる「請求先アカウント」(クレジットカード情報など)の登録が必須です。この登録がプロジェクトに紐づいていない状態です。
●どうすればいい? Google Cloudの「お支払い」メニューから、有効な請求先アカウントを対象のプロジェクトにリンクさせてください。
4. データセットの場所が一致しない
●エラーメッセージの例: Dataset location mismatch
●どんな状態? Search Consoleがデータを送ろうとしている地域(例:東京)と、BigQuery側で既にデータが保存されている地域(例:米国)が異なっている状態です。データの保管場所は、最初に決めた場所から変更できません。
●どうすればいい? これは一度設定してしまうと後から変更できません。一度、Search Console側で一括データエクスポートの設定を削除し、再度設定を行ってください。その際、エクスポート先のデータセットの場所を、既存のデータと同じ場所に指定します。
エラーの先にある、データ活用の世界へようこそ!
お疲れ様でした!無事にエラーは解決できたでしょうか。エラーの解決はゴールではなく、データと向き合うためのスタートラインに立った証拠です。
今回解決したスキルを武器に、ぜひLooker Studioでデータを可視化するなど、本格的な分析に挑戦してみてください。あなたのサイトの新たな可能性が、きっと見つかるはずです。
やりたいけどアクセス解析やデータ解析の手が足りていない、という方はぜひサイトエンジンにご相談ください。
プロフェッショナルが御社のデータ分析や、データ分析内製化のためのサポートをさせていただきます。