Google アナリティクスで検索キーワードがクエリじゃない時の対処法

2016 年 6 月 17 日

サイト内検索の検索キーワードは、クエリで送られることが多いのですが、ディレクトリで送られる場合の対象法を解説します。

検索キーワードをディレクトリで指定する弊害

検索キーワードをディレクトリで指定すると、このサイトで「抜歯」を検索した時のURLは
http://dokodekodoor-junk.net/seach/keyword/抜歯
となっていたとします。

Google アナリティクスには、「アナリティクス設定→ビューの設定→サイト内検索の設定」があります。
クエリでキーワードを送信している場合は、クエリパラメータを指定するだけで、サイト内検索の分析ができます。

サイト内検索の分析は、クエリパラメータの指定をする
サイト内検索の分析は、クエリパラメータの指定をする

この設定をしないと、検索キーワードごと全て異なるページで集計され、デーブルのデータ制限を超えると(other)でまとめられてしまいます。

レポートの (other) 項目

どんなキーワードでサイト内検索されているのかわからなくなってしまいます。

Google アナリティクスでは、データを送るときにカスタムページビューを使う方法が紹介されていますが、開発の手間をかけずに、Google アナリティクスの設定で解決しましょう。

サイト内検索がクエリで送られないときの解決方法
サイト内検索がクエリで送られないときの解決方法

サイト内検索を設定して検索データを確認する

Google アナリティクスのフィルタ

Google アナリティクスの設定「アナリティクス設定→ビュー→フィルタ」を設定すると、対象のビューにフィルタ済みのデータで集計されます。

フィルタには、種類があります。今回使うのは「カスタムフィルタの詳細」です。ドメイン名を表示するときに使いますね。

カスタムフィルタの詳細

たとえば、先ほどのドメインを表示するときの設定方法です。

フィールド A:ホスト名 -> 引用 A:(.*)
フィールド B:リクエストURI -> 引用 B:(.*)
出力先:リクエストURI -> 構成:$A1$B1

上記設定をすればページレポートにドメイン名が表示されます。ほぼ、この設定しかしたことがなく、仕組みを理解してこなかったのですが、ずっと気になっていたことがあります。

カスタムフィルタで詳細を選択すると、下部にヘルプが表示されるのですが、これが、なかなかすごいことをしています。

詳細にあるヘルプ、理解できている人挙手!
詳細にあるヘルプ、理解できている人挙手!

要望があれば解説しますが、今回はスルーで。ただ、これを理解するとできることが広がるなとは思いました。

ディレクトリをクエリに変更する設定

3回にわけて設定します。

検索結果のURLは、「http://dokodekodoor-junk.net/seach/keyword/抜歯」

リクエストURIには、「/seach/keyword/抜歯」が入っています。keywordディレクトリは検索結果でのみ使われるとします。

1.keywordを含むURIのkeyword以降を格納

カスタムフィルタの詳細には、「カスタムフィールド1,2」が用意されています。一時的に値を入れておける箱だと考えてください。

フィールド A:リクエストURI -> 引用 A:(keyword/[^/]*)
フィールド B -> 引用 B (指定なし)
出力先:カスタムフィールド1 -> 構成:$A1

リクエストURIに「keyword/」を含むときに、keyword/ 以降をカスタムフィールド1に格納しました。「keyword/抜歯」が格納されたことになります。

2.検索キーワードを抽出

カスタムフィールド1から、検索キーワードを抽出します。

フィールド A:カスタムフィールド1 -> 引用 A:(/[^/]*)
フィールド B -> 引用 B (使いません)
出力先:カスタムフィールド1 -> 構成:$A1

ヘルプの正規表現をよむと、()は|と一緒に使うって書いてあるのですが、フィルタヘルプの例をみても、一緒に使う必要はないです。フィールドAでは、/以降の文字列を抽出しています。

終わりも指定しないとエラーが出るので、/までと指定しています。検索キーワードの中に「/」が入っているとうまく抽出できないかもしれません。適宜変更してください。

これで、カスタムフィールド1には、「/抜歯」が格納されています。最初の「/」外したかったんですけど、どうにもできませんでした。どなたかやり方教えてください。

3.検索キーワードから不要な「/」を外します。

ここでは、カスタムフィルタの「検索と置換」を使います。

フィルタ フィールド:カスタムフィールド1
検索文字列:/
文字列の置換:(空白)

検索キーワードから「/」が消えました。

4.クエリを指定

検索キーワードをクエリ指定に変更します。

フィールド A:リクエストURI -> 引用 A:(.*/keyword/)
フィールド B:カスタムフィールド1 -> 引用 B:(.*)
出力先:リクエストURI -> 構成:$A1\?gakeyword=$B1

フィールドAで、リクエストURIにkeywordが含まれる場合は、keyword以降を消去しています。
フィールドBは、2で作った検索キーワードをもってきます。
出力先に、他とかぶらないクエリパラメータ「gakeyword」をつけて、リクエストURIを生成しています。

「/seach/keyword/?gakeyword=抜歯」

ページ内検索に設定

ページで、思い通りに動くことを確認し、ビューの設定で、ページ内検索を設定します。

これで完璧と思ったのですが・・・

[warning]残念ながら、ページ内検索に適応されません[/warning]

軽く無駄骨でした。。。フィルタは、レポートの結果に適応されても、ページ内検索のクエリには適応されないようです。

これは、シーズン2突入です。次回は、Google タグマネージャーで送るデータを変えてみたいと思います。

シーズン2 タグマネージャ編
Google アナリティクスで検索キーワードがクエリじゃない時の対処法 GTM編

フィルタでも大丈夫そうです

以下のツイートを頂きました。

見落としていました。。検索語句!! これでいけそうです。衣袋さん、ありがとうございます。