【画像付きで解説】PythonでGoogle Search Console APIを扱う方法

検索窓に「search」と入力している画像

今日はPythonでGoogle Search Consoleの情報を取得していくよ!
ブログサイトの分析に使えそうな技術だね!でも、設定が難しそう...
APIの設定方法から画像を使って丁寧に解説するから大丈夫だよ!

この記事を作成するにあたって、以下の記事を参考にさせていただきました。

Pythonを使ってGoogle search consoleのAPIを叩いてみた!5000行出力!

この記事では上記のサイトにはあまり記載されていないGoogle Search Console APIの設定方法Pythonのコードでつまづいた箇所を中心に解説していきます。

目次目次[閉じる]

Google Search Console APIを使用するための設定

Google Cloud Platformでプロジェクトを作成

まずは、Google Cloud Platform(以下、GCP)の設定をします。

ここではアカウントの作成は終了している前提で進めていきます。

既存のプロジェクトを利用することもできるので、プロジェクトがすでにある方は読み飛ばしていただいて結構です。

まず、「Google Cloud Platform」の右側をクリックしてください。

Google Cloud Platformのプロジェクトを選択する部分を強調

「新しいプロジェクト」を選択します。

Google Cloud Platformのプロジェクト選択画面で新しいプロジェクトを選択している画像

プロジェクト名の欄に好きなプロジェクト名を入力して「作成」をクリックします。

Google Cloud Platformで新規プロジェクト名を入力する画面

これでプロジェクトが作成されました。

Google Search Console APIの有効化

次にGoogle Search Consoleの設定です。

GCPの画面の左上をクリックし、「APIとサービス」、「ダッシュボード」の順にクリックします。

Google Cloud Platformのメニューで「APIとサービス」のダッシュボードを選択している画像

先ほど作成したプロジェクトを選択し、画面上部の「+ APIとサービスの有効化」をクリックします。

Google Cloud Platformの「APIとサービスの画面」で「+APIとサービスの有効化」を選択している画像

検索窓に「google search console」と入力します。

Google Cloud PlatformのAPI検索窓

するとGoogle Search ConsoleのAPIが表示されるのでクリックします。

Google Search Console APIを選択している画像

「有効にする」をクリックするとGoogle Search ConsoleのAPIが有効になります。

Google Search Console APIを選択している画像

サービスアカウントの設定とJSONファイルの作成

次にAPIに対する認証情報の設定をします。

「APIとサービス」の画面の左側メニューから「認証情報」を選択します。

Google Search Console APIのメニューで「認証情報」をクリックしている画像

「+ 認証情報を作成」、「サービスアカウント」の順にクリックします。

Google Search Console APIのサービスアカウントの新規作成

サービスアカウントの情報を入力していきます。 アカウント名やアカウントIDは自分が認識できる名前ならばなんでも大丈夫です。

Google Search Consoleのサービスアカウントの作成の必要項目を入力している画像

②と③の項目は省略して問題ありません。入力したら「完了」をクリックします。

すると、作成した新しいサービスアカウントが表示されます。

Google Search Console APIのサービスアカウントが作成された画面

また、一番左の「メール」に表示されているアドレスは後ほど使うので、コピーしておいてください

サービスアカウントに記載されているメールをコピーしている画像

次に鍵の作成をします。

作成されたサービスアカウントの右側の「操作」の下の点をクリックし、「鍵を作成」をクリックします。

サービスアカウントの鍵を作成

キーのタイプは「JSON」を選択して「作成」をクリックします。

キーのタイプでJSONファイルを選択している画像

するとキーが作成されると同時に認証情報が記載されたJSONファイルがダウンロードされます。

このJSONファイルは後ほど使用するので必ず保管してください。

以上でGCP側の設定は終了です。

Google Search Console 側で権限の追加

次にGoogle Search Console側の権限設定をしていきます。

サーチコンソールの画面の左側のメニューの「設定」をクリックします。

Google Search Consoleの画面のメニューで「設定」を選択している画像

「ユーザーと権限」をクリックします。

「ユーザーと権限」を選択している画像

画面右上の「ユーザーを追加」のボタンをクリックします。

「ユーザーを追加」のボタンをクリックしている画像

するとメールアドレスを入力する箇所があるので、先ほどGCPの画面で作成したサービスアカウントのアドレスを貼り付けて、「追加」をクリックします。

「ユーザーを追加」の画面でアドレスを貼り付けている画像

ユーザーの欄に新たに権限が追加されました。

ユーザーが追加されたことを表示している画像

これで自サイトのGoogle Search Consoleにアクセスする準備が整いました。

ここからいよいよPythonを使って情報を取得してきます。

Google Search Consoleの情報をPythonで取得するコード

これからPythonでGoogle Search Consoleの情報を以下のようにCSVファイルで出力していきます。

Pythonで取得したGoogle Search Consoleの情報をCSV出力した画像

クリック数や検索キーワードなどを取得してきます。

ます、コードに必要な以下の3つのライブラリをインストールします。

pip install pandas
pip install --upgrade google-api-python-client
pip install google-auth

ちなみに、oauth2clientは現在非推奨となっているため、今回はgoogle.oauthを使っています

詳細はこちらの記事に記載されています。

Google Search Consoleの情報を取得するためのコードは以下です。

import pandas as pd
from googleapiclient.discovery import build
from google.oauth2 import service_account
#from oauth2client.service_account import ServiceAccountCredentials 
#oauth2clientは今後アップデートをしないため、非推奨となっている。

credentials = service_account.Credentials.from_service_account_file('JSONファイルのパス')

webmasters = build('webmasters', 'v3', credentials=credentials)

print(webmasters.sites().list().execute())

url = 'サイトのURL'

d_list = ['query', 'page']
start_date = '2021-02-01'
end_date = '2021-02-12'
row_limit = 500

body = {
    'startDate': start_date,
    'endDate': end_date,
    'dimensions': d_list,
    'rowLimit': row_limit
}

response = webmasters.searchanalytics().query(siteUrl=url, body=body).execute()
df = pd.io.json.json_normalize(response['rows'])

for i, d in enumerate(d_list):
    df[d] = df['keys'].apply(lambda x: x[i])

df.drop(columns='keys', inplace=True)
df.to_csv('{}.csv'.format(start_date), index=False)

print(df)

個別に書き換えなければいけない部分は以下の2つです。

1つ目は、KEY_FILE_LOCATION = 'JSONファイルのパス'の部分を先ほど取得した鍵のJSONファイルのパスに修正します。

2つ目は、url = 'サイトのURL'の部分を自分のサイトのURLに置き換えます。

これでPythonファイルを実行して無事CSVファイルが取得できれば完了です。

しかし、以下のようなエラーが発生した場合は修正が必要です

raise HttpError(resp, content, uri=self.uri)googleapiclient.errors.HttpError: HttpError 403 when requesting https://www.googleapis.com/webmasters/v3/sites/******.com/searchAnalytics/query?alt=json returned "User does not have sufficient permission for site '******.com'. See also: https://support.google.com/webmasters/answer/2451999.". Details: "User does not have sufficient permission for site '******.com'. See also: https://support.google.com/webmasters/answer/2451999.">

このときは、48行目のprint(webmasters.sites().list().execute())の部分でターミナルに出力されている文章を確認してください。

{'siteEntry': [{'siteUrl': 'sc-domain:*.com', 'permissionLevel': 'siteFullUser'}]}{'siteEntry': [{'siteUrl': 'sc-domain:**.com', 'permissionLevel': 'siteFullUser'}]}

出力されている文章の「siteUrl」の部分に注目してください。「https://」ではなく、「sc-domain:」で始まっていないでしょうか?

その場合、url = 'サイトのURL'のサイトのURLを「sc-domain:***.com」としてください。

これでエラーが解消されるかと思います。

また、取り出す情報の期間を変更したい場合は

start_date = '2021-02-01' end_date = '2021-02-12'

の部分の日付を変えてあげればOKです。

row_limit = 500

の数字を変えると出力する最大行数を変更することができます。

なお、出力できる行は最大5000までとなっております。

実際に調べたい期間を設定して Google Search Consoleの情報を取得してみてください。

終わりに

以上、いかがでしたでしょうか?

Google Search Console APIを使えば、自分のサイトがどのくらい訪問されていて、どのような検索ワードで検索されているかなどを分析することができます。

API設定などは大変ですが、一度設定すれば定期的に自動取得したり、上限に設定されている数以上に情報を取得することができます。

ぜひ本記事を参考に設定をしていただけると幸いです。

それではお疲れ様でした。