いうえおかき

サーチコンソールAPIを使ったOR検索フィルター

サーチコンソールの画面上では、フィルターでor検索ができません。
例えばクエリフィルターで「python」または「ワードプレス」を取り除いたデータを一度に出せないのです(スプレッドシートのアドオン「Search Analytics for Sheets」だとand検索の複数指定のフィルターだけはできます)。
ある事情でどうしても2つ以上のor検索がしたかったので、APIでできないかとずっと模索していましたが、ようやくできましたので記録を残しておきます。

dimensionFilterGroupsを使用したOR検索

サーチコンソールAPIで使えるプロパティは複数あります。例えば、ページ別やクエリ別をしてするdimensionやクエリ検出数を指定するrow_limitなどです。今回はそのプロパティの中でdimensionFilterGroupsというものを使用しました。これは読んで字のごとく「dimensionをフィルタするもの」で下記のように記述して使います。


略

"dimensionFilterGroups": [
    {
      "filters": [
        {
          "dimension": "query",
          "operator": "notContains",
          "expression": "カスタムフィールド",
        },
      ]
    }
]

略

上記の例だと、

“dimension”: “query”, =クエリを指定
“operator”: “notContains”,=”含まない”を指定
“expression”: “カスタムフィールド”,=”カスタムフィールド”というフィルタするものを指定

という意味になり、要は「クエリから”カスタムフィールドを含まない”結果を出力する」ということになります。ここまではサーチコンソール上でもできることですが、これから行う複数指定はAPIにしかできないことです。
複数指定する場合、下記のようにfiltersプロパティの配列を増やして設定すれば、複数条件で設定ができます。


略

"dimensionFilterGroups": [
    {

      "filters": [
        {
          "dimension": "query",
          "operator": "notContains",
          "expression": "カスタムフィールド",
        },
        {
          "dimension": "query",
          "operator": "notContains",
          "expression": "python",
        }
      ]
    }
  ]

略

上記の場合は「クエリから”カスタムフィールドを含まない”or”pythonを含まない”結果を出力する」ということになります。

OR検索フィルターを実際に試してみた。

まずは、自分のサイトの6月1日のクエリデータをcsvで引っ張ってきます(python + APIを使用)。

6クエリしかないのでわかりやすいと思います(流入状況が寂しい状況なのは置いておいて)。
次にここから、先述したコードを用いて「クエリから”カスタムフィールドを含まない”or”pythonを含まない”結果を出力する」ことを行ってみます。

python実行。

(base) Macintosh:API az$ python3 SearchConsole.py
done

そして出来たデータがこちら

結果、”カスタムフィールドを含まない”or”pythonを含まない”クエリデータをきちんと出力することができました。

ちなみに今回は2つだけですが、filtersプロパティの配列を増やしていけば3つ以上のor検索も可能です。
もちろんoperatorプロパティを変えればand検索もできますし、dimensionプロパティを変えればページでもできます。

コーディングとかプログラム制作ではあるあるですが、今回も苦労して出来た割に改めて考えてみると悩むような難しい問題でもコードでもなかったです。。しかし非常に時間がかかりました。。。

トップへ戻る