Google Search Consoleのデータを取得する
この記事では、Google Search Consoleからデータを取得する方法を紹介します。
GetSearchAnalytics(Seach Consoleのデータを取得)
Google Search Consoleの検索パフォーマンスデータを取得するためには、GetSearchAnalyticsアクションを使用します。
このアクションでは、Google Search Consoleの検索パフォーマンス画面に表示される以下の値が取得できます。
- 合計クリック数(clicks)
- 合計表示回数(impressions)
- 平均CTR(ctr)
- 平均掲載順位(position)
- 取得できるデータの種類(dimensions)に指定した値の内訳
(※上記画像の例であれば、デバイス:”PC”を意味する”DESKTOP”というテキストが取得されます)
ワークフローの設定例
ここでは例として、以下条件を満たすデータをSearch Consoleから取得するサンプルを作成します。
- 集計サイトのドメインがhttps://hofefuga.com/である
- 集計対象期間は1ヶ月前の末日(2022/11/30)から2022/12/26とする
- クエリ(検索キーワード)に “ファイル” が含まれている
- デバイスがPC(DESKTOP)である
手始めに、GetSearchAnalyticsアクションに基礎的な情報を設定します。
- GetSearchAnalyticsアクションをワークフローに設置します
- プロバイダID(provider)に、Search Consoleのコネクションを指定します
- プロパティのURLまたはドメイン名(siteUrl)に、データ取得対象ページのドメインを入力します
集計対象の期間(1ヶ月前の月末~2022/12/26)を設定します
- リクエスト期間の開始日付(startDate)の右端のカレンダーアイコンをクリックします
- 「相対日時」タブに移動します
- 「先月月末」をクリックします
※数値=1, 単位=ヶ月, 前後=前,初末オプション=月末とする形でもOKです - OKをクリックします
- リクエスト期間の終了日付(endDate)を設定します
- 2022-12-26と直接入力するか、カレンダーの日付選択タブから2022-12-26を直接選択します。
取得するデータの種類(dimensions)を設定します。
- 取得するデータの種類(dimensions)入力欄右端の、Search Consoleのアイコンをクリックします
- device, queryにそれぞれチェックを入れます
- 決定をクリックします
次に、取得するデータを絞り込みます(フィルタリング)
絞り込みの命令文は、JavaScriptの配列形式(要素はオブジェクト)を使用します。テンプレートは以下となります
[{"dimension":"3で選択したdimensionのいずれか","operator":"完全一致(equals)or含む(contains)or完全一致ではない(notEquals)or含まない(notContains)","expression":"クエリやページのURL、デバイスの種類、国名"}]
今回のフィルター条件は以下となるため、対応するフィルタオブジェクトを作成していきます。
#フィルター条件① クエリに “ファイル” が含まれている
- dimension「クエリ」に対する条件であるため、dimensionを”query”とします
- 「~~を含む」という演算を使用するため、operatorを”contains”とします
- 上記により「クエリに~~を含む」までができています
「~~」は今回「ファイル」であるため、expressionを”ファイル”とします - これにより以下クエリが出来上がります。
{"dimension":"query","operator":"contains","expression":"ファイル"}
#フィルター条件② デバイスが “PC” である
- dimension「デバイス」に対する条件であるため、dimensionを”device”とします
- 「~~と完全一致する」という演算を使用するため、operatorを”equals”とします
- 上記により「デバイスが~~と完全一致する」までができています
「~~」は今回「PC(内部的にはDESKTOP)」であるため、expressionを”DESKTOP”とします - これにより以下クエリが出来上がります。
{"dimension":"device","operator":"equals","expression":"DESKTOP"}
# 2つの条件をGetSearchAnalyticsアクション用に加工する
GetSearchAnalyticsアクションのfiltersパラメータへのインプットは、配列形式である必要があります。
よって、上で作成した2つの条件式を配列のカッコで囲い、条件式をカンマで区切ります。
[{"dimension":"query","operator":"contains","expression":"ファイル"},{"dimension":"device","operator":"equals","expression":"DESKTOP"}]
最後に、↑のクエリをGetSearchAnalyticsアクションのfilterに入力します。
ワークフローを実行して、取得された値を確認します。
Search Consoleの検索パフォーマンス画面に表示されている 「+新規」ボタンから実現できる動作を指定している形になります。
各dimensionにfilterを適用する際の注意点は、以下となります。
#dimensionをpageにした場合
dimensionをpageとしたfilterオブジェクトを作成する場合、expressionに指定するURLは、エンコード済みである必要があります。
NG例:https://support.autoro.io/docs/example/検索結果のスクレイピング/ OK例:https://support.autoro.io/docs/example/%e6%a4%9c%e7%b4%a2%e7%b5%90%e6%9e%9c%e3%81%ae%e3%82%b9%e3%82%af%e3%83%ac%e3%82%a4%e3%83%94%e3%83%b3%e3%82%b0/ ※どちらも同じページのURLです
#diimensionをdeviceにした場合
expressionに指定できるデバイスは、以下いずれかになります。
- DESKTOP
- MOBILE
- TABLET
# dimensionをcountryにした場合
expressionに国名を指定する際の国名の表記は、ISO 3166-1 alpha-3表記(リンク)である必要があります。
//例:日本
JPN //例;セルビア
SRB
より詳細なフィルターの作成方法については、以下をご参照ください。
画面上の結果と対応する値が取得できていることが確認できます。
出力される値はJSONとなります。この値はそのままスプレッドシート/Excelに貼り付ける事ができません。
JSONをスプレッドシート/Excelに貼り付けたい場合は、ConvertJSONToArrayアクションを使用する必要があります。
# Search Consoleのデータを取得 +get_search_analytics_1: action>: GetSearchAnalytics provider: '' siteUrl: 'https://hogefuga.com/' startDate: '2022-12-26' endDate: ${moment().subtract(1, 'months').endOf('month').format('YYYY-MM-DD')} dimensions: ["device","query"] filters: [{"dimension":"query","operator":"contains","expression":"ファイル"},{"dimension":"device","operator":"equals","expression":"DESKTOP"}] rowLimit: 1000 private: false meta: display:
仕様上の注意点
最新のデータを取得した場合のデータの正確性
仕様により、GetSearchAnalyticsアクションの集計対象期間の日付をアクション実行時点から3日以内の値とした場合、
手元のブラウザで開いたSearch Consoleの検索パフォーマンス画面に表示されている数値と、GetSearchAnalyticsアクションで取得した値に、差異が発生する場合があります。
これは、ブラウザで開いた検索パフォーマンス画面に表示されている最新のデータが「暫定値(確定していない数値)」であるために発生します。詳細は、以下のGoogle公式情報をご参照ください。
参考:検索パフォーマンス レポート – Search Console ヘルプ
値が取得できなかった場合
GetSearchAnalyticsアクションに指定した条件で値が取得できなかった場合のログは、以下となります(エラーは発生しません)。
上述の実行結果と異なり、rowsプロパティが存在しません。この事実は条件式に使用することが可能です。
{ "responseAggregationType": "byProperty" }