ブログ運営をしていると当然アクセスが気になります。どんなキーワードで検索されているのか、そのときの順位はどうなっているのかなど。このようなブロガーなら気になる情報を取得する方法があります。それがサーチコンソール(別名:サチコ)です。

そこで今回は3月のサーチコンソールのレポートを解析することにします。検索キーワード、クリック数、表示回数、掲載順位がわかります。表示回数が多いキーワードであればコンテンツを充実させることで掲載順位をアップさせることができればアクセスアップに繋がります。どの部分を頑張ればいいかわかるのでサチコには登録しておきましょう。

レポートは過去1ヶ月とか1週間という形でまとめてダウンロードできますが、今回は1日1日すべておこないます。というのはレポートに表示されるのは1000件までだからです。毎日であれば1000件という上限に到達することはないので(本当はしてほしいのだが・・・)検索されたキーワードの表示回数とそのときの順位が取得できそうです。

こんな形で結果を知ることができます。やっぱり検索数が多く、上位表示ができそうなキーワードに力を入れたいですよね。そこで毎日のレポートを一行ずつ取得して以下のようなクラスに格納することを考えます。

毎日のサーチコンソールのレポートはすでにダウンロードしているので、あとは複数のファイルを一気にWindowFormの上にドラッグ&ドロップすればDataオブジェクトのリストを取得することはできそうです。

まずファイルのドラッグ&ドロップを受け入れる設定をおこないます。Form1にドロップするのでForm1.AllowDropをtrueにすればいいですね。

ドラッグオーバーされたら仮想メソッドOnDragOverメソッドがよばれ、ドロップされたらOnDragDropメソッドが呼ばれます。それぞれをオーバーライドして処理ができるようにします。

OnDragDropメソッドでドロップされたファイルのパスの配列が取得できたら自作メソッドGetDataFromExcelFileでデータを取得します。

ではどのような処理をすればいいでしょうか?

そのまえに取得したデータを格納するクラスを作成します。

KeyWordプロパティは検索されたキーワード、DateTimeプロパティは検索された日、DisplayedCountプロパティは検索結果が表示された回数、ClickedCountプロパティは検索結果に表示されたリンクがクリックされた回数、Rankingプロパティはそのときの順位です。

数日分の上記のデータを検索ワードを軸にしてまとめます。GetDisplayedCounts()メソッドはその期間の表示回数を返します。GetClickedCounts()メソッドはその期間のクリックされた総数を返します。GetRankingAverage()メソッドは順位の平均を返します。

この結果を分析して上位表示されているはずなのにGetClickedCounts()が返す値が少なすぎるのであればタイトルを見直したほうがいいかもしれません。またGetDisplayedCounts()メソッドが返す値が大きく、掲載順位もまあまあであればコンテンツを充実させることで順位をあげてアクセスアップを実現することができるかもしれません。

ではドロップされたファイルを取得したあとのことを考えましょう。

まずExcelファイルではない見当外れなファイルがドロップされることがあります。そのようなファイルは除外しなければなりません。Excelファイルであってもサーチコンソールのレポートとは無関係のファイルだった場合も除外しなければなりません。

GetDataFromExcelFilesメソッドはExcelファイルから必要なデータを抜き出して生成したDataオブジェクトをリストにするメソッドですが、ExcelファイルでないファイルやExcelファイルであっても必要なデータを抜き出せなかった場合は例外処理をしています。

それからExcelファイルを操作するのでNugetでClosedXMLをインストールしておいてください。

これがExcelファイルから必要なデータを抜き出すメソッドです。「フィルタ」というシートのB3に日付が書かれています。また「クエリ」というシートの一番上には「検索キーワード」「クリック数」「表示回数」「CTR」「掲載順位」が書かれています。そこで2行目以下のセルを調べれば必要なデータが取得できます。A列を調べてなにも書かれていないのであればレポートはそこで終わりと判断しています。

Dataオブジェクトのリストを集めたら、日付順に並べ替えます。そしてアクセス解析の関心事としては

検索結果に多く表示されているキーワードはなにか?
検索され、実際にアクセスを呼び込めているキーワードはなにか?
現在、上位表示されているキーワードはなにか?

なので、これらを求めるメソッドを作成します。

GetDisplayedKeyWordInfosメソッドやGetClickedKeyWordInfosメソッド、GetRankingKeyWordInfosメソッドで必要なデータを集めることができたので、これを元にExcelファイルを作成します。

キーワードごとに新しいシートを作成していますが、あまり多くすると管理しにくくなります。過ぎたるは及ばざるが如しです。

最後にこれらのメソッドをつかってExcelファイルがドラッグ&ドロップされたときの処理を実装します。

完成♪