# マネージド機能のインストール(初回のみ実行) pip install --upgrade google-api-python-client pip install oauth2client # ライブラリの読み出し import pandas as pd from googleapiclient.discovery import build from oauth2client.service_account import ServiceAccountCredentials from datetime import datetime, date, timedelta
## サーチコンソールへのアクセス設定を行う
SCOPES = ['https://www.googleapis.com/auth/webmasters.readonly'] ## 固定設定
KEY_FILE_LOCATION = 'xxxxxxx.json' ## 自分のgoogle search console上で作成したjsonの認証情報を設定する
credentials = ServiceAccountCredentials.from_json_keyfile_name(KEY_FILE_LOCATION, SCOPES)
webmasters = build('webmasters', 'v3', credentials=credentials)
domain = 'https://xxxxxx.com' ## 自分のgoogle search consoleに登録してあるサイトのURL
dimensions = ['query', 'page']
## 取得データは直近90日分に絞る
today = datetime.today()
startDate = (today - timedelta(days=90)).strftime('%Y-%m-%d') ## 実行日の90日前を指定
endDate = today.strftime('%Y-%m-%d') ## データ取得終了日は処理日を指定
rowLimit = 5000 # 取得レコード数の最大値を設定
body = {
'startDate': startDate,
'endDate': endDate,
'dimensions': dimensions,
'rowLimit': rowLimit
}
## ここでデータ取得
response = webmasters.searchanalytics().query(siteUrl=domain, body=body).execute()
df = pd.json_normalize(response['rows'])
## 取得したデータの整形
for i, d in enumerate(dimensions):
df[d] = df['keys'].apply(lambda x: x[i])
## google search consoleの3ヶ月の平均掲載順位を取得
df_positonMarge = df.loc[df.groupby('page')['position'].idxmin()] ## pageでgroupbyした結果で最もpositionが小さい値を取得
print(df_positonMarge["position"].mean().round(2))
> 19.79 # 上記コードの実行結果
手動設定必要なコード
3行目:自分のgoogle search console上で作成したjsonの認証情報を設定する
7行目:自分のgoogle search consoleに登録してあるサイトのURL
pythonコード作成前に、GCPのプロジェクト作ったり、search console apiを有効化したり、アクセスのためのアカウントや認証キーの作成が必要ですが、その辺りは以下サイトに詳細書いてありますので、そちらを参照ください。


