GAの動線図作成のためにスプレッドシートとアドオンでデータを取得する

Google Analytics(ユニバーサルアナリティクス)でサイト内のページの遷移を表す動線図(目標到達プロセスのようなサイト内の遷移を表現する図)を作るためのデータ取得に,スプレッドシート&アドオンの組み合わせが活用できます.API&プログラムで行う方がより効率的ですが,スプレッドシート&アドオンも簡単・便利なのでその方法を紹介します.

 

1.はじめに

記事「データポータルで作るGAの目標到達プロセスのレポート(メリットあり)」でGoogle Analytics(ユニバーサルアナリティクス)の目標到達プロセスのレポートをデータポータルで作成し紹介しました.この記事の最後にも書いたのですが,なにも目標到達プロセスに限定しなくてもセッションの動線(サイトにアクセスしたユーザーがどのようなページ遷移をしているかをセッション単位で集計した動線)を作れるとも書きました.動線図とは例えば図1のようなものです(図1(a)のような直線的な到達プロセスのようなものだけでなく,図1(b)のようなグラフ的なものも考えられます).

この記事ではそのような動線図を作成するために必要となる各ページに到達したセッションやページ間を遷移したセッションの数を求める方法を,Googleスプレッドシートとアドオンを利用して求める方法を紹介します.

図1.動線図の例

図1.動線図の例

 

2.モチベーション

記事「データポータルで作るGAの目標到達プロセスのレポート(メリットあり)」を公開した同日に,and,a株式会社さんがnoteにて,

Google アナリティクス 動線図作成をスクリプトを書いて行う【Google Apps Script 応用編】

という記事をアップしていたことをTwitterで知りました.

なるほど,たしかにGoogle Analytics(以下,GA)の動線図を作成しようとすると,GAのビューにシーケンスを用いたカスタム セグメントを数多く作らなくてはいけなく,データポータルで作るにも限界もあり非効率です(GAのカスタム セグメントも作れる数の上限もありますし,数多く作るのは管理も含めてけっこう大変です.またデータポータルでは,1つのページに埋め込めるスコアカードやテーブルの数にも上限があります).

上記のnoteの記事を参考にして,Google Apps Script(以下,GAS)で実際にデータを取得できました.GAとAPI接続することでPythonやRなどでも同様なことはできると思いますが,プログラムを実行する環境を用意する手間がないなども考えるとGASでこのようなことができるのは便利だなと思いました(Mac環境だとPythonはデフォルトで使えたかな?).

ただ,プログラムになれてない・抵抗がある人だと,(上記のnoteの記事は説明も丁寧でわかりやすいとは思いますが)このGASを利用した方法でもハードルが高いかもしれないなとも感じました.

ようするに効率よく同様のデータを取得する(GAのビューに多数のカスタムセグメントを作らず,一度に多くの場合のデータを取得する)ならば,GoogleスプレッドシートとGAのアドオンの組み合わせで十分可能ではないかと思い,それをやってみようとなりました.

 

3.デモサイトの動線とセグメントなどの準備

記事「データポータルで作るGAの目標到達プロセスのレポート(メリットあり)」では,動線(到達プロセス)のレポートを作るためにGAのデータとしてGoogleが提供しているデモアカウントを用いました.ですがこのデモアカウントはAPI接続を許可していない,スプレッドシートとそのGAのアドオンでの接続も許可していないようです.

そこで記事「GA(ユニバーサルアナリティクス)で個々のユーザーのサイト内の行動を追う」のとき用意したデモサイト(FC2のフリーでホームページを作れるサービスを利用して作ったサイト)

[デモサイト] GA TEST SITE

のデータを使うことにしました.それ故に,データ数が少ないです(2021年4月1~2021年4月30日のデータを利用します).

このデモサイトの計測対象ページは,「home」と「menu01」と「menu02」と「menu03」と「Thanks」の5つのページのみです.このデモサイトは,目標ID1としてページ「Thanks」に該当するパス(URL)を到達ページとして設定していますが,目標到達プロセスは設定していません.ページ「Thanks」へのリンクは,ページ「menu01」と「menu02」と「menu03」にあり,ページ「home」にはありません.

今回は,動線図を作るための例として,

パターン1:「menu01」を閲覧したセッション

パターン2:“「menu01」→「menu03」”と閲覧したセッション

パターン3:“「menu01」→「menu03」→「Thanks」”と閲覧したセッション

と期間内のトータルのセッションを取得してみます.理由は,パターン1~3の組み合わせが,図1(a)のような一直線な動線の関係になるほうが例として適当だと思ったからです.

なお,“menu01」→「menu03”を閲覧したセッションとは,“ページ「menu01」を閲覧した後にページ「menu03」を閲覧したセッション”を表します.

まずは,GAで上記のパターン1, パターン2, パターン3の各セッションを集計するセグメントを作成して,GA上で集計してみたいと思います.パターン1, パターン2, パターン3の各セッションを集計するカスタム セグメント“[Pattern_1],[Pattern_2],[Pattern_3]”の設定は,それぞれ図2,3,4のようにしてみました

図2.パターン1の「menu01」を閲覧したセッションを集計するカスタム セグメント“[Pattern_1]”の設定内容

図2.パターン1の「menu01」を閲覧したセッションを集計するカスタム セグメント“[Pattern_1]”の設定内容

 

図3.パターン2の“「menu01」→「menu03」”と閲覧したセッションを集計するカスタム セグメント“[Pattern_2]”の設定内容

図3.パターン2の“「menu01」→「menu03」”と閲覧したセッションを集計するカスタム セグメント“[Pattern_2]”の設定内容

 

図4.パターン3の“「menu01」→「menu03」→「Thanks」”と閲覧したセッションを集計するカスタム セグメント“[Pattern_3]”の設定内容

図4.パターン3の“「menu01」→「menu03」→「Thanks」”と閲覧したセッションを集計するカスタム セグメント“[Pattern_3]”の設定内容

 

カスタム セグメントの「シーケンス」という機能を使っています.シーケンスを使ったセグメントに関しては,Web担当者フォーラムのサイトにある衣袋氏のコラム,

Googleアナリティクス セグメント100選

ユーザー行動分析に効く! シーケンスの使い方①――特定の順番でページを見た人を調べよう(第88回)

が参考になると思います.また,記事「データポータルで作るGAの目標到達プロセスのレポート(メリットあり)」でも補足的な説明をしています.

図2, 3, 4を見てもらえばわかりますが,ページに対してパス(URL)が「完全一致」や「含む」や「正規表現に一致」を使い,ステップの追加において「の次のステップ」や「の直後のステップは」を使っている箇所があります.

 

===補足説明(始まり)====

セグメントの機能の「の次のステップ」と「の直後のステップは」の違いとは

例えば“ページ「menu03」を閲覧した後にページ「Thanks」を閲覧したセッション”には,

① ページ「menu03」を閲覧した直後にページ「Thanks」に遷移した場合(ページ「menu03」からページ「Thanks」に直接遷移した場合),

② ページ「menu03」を閲覧した直後にページ「Thanks」以外に遷移しさらにその後にページ「menu01」か「menu02」経由でページ「Thanks」に遷移した場合(ページ「menu03」からページ「Thanks」への移動の間に他のページを挟んでいて,途中に挟むページはいくつあっても良く,最終的にページ「menu03」以外のページから「Thanks」に遷移した場合),

があります(デモサイトではページ「Thanks」へのリンクはページ「menu01」と「menu02」と「menu03」にあり,ページ「home」にはありません).①の場合がステップの追加において「の直後のステップは」に該当します(図1(b)のような動線図を作るなら各ページ間の遷移数が必要なのでこちらを使うべきでしょう).一方で,同一セッション内でともかくページ「menu03」を閲覧した後に経路はともかくページ「Thanks」を閲覧した事実があれば良い場合は,①と②のどちらでもいいので「の次のステップ」を使うことになります.

===補足説明(終わり)====

 

通常はセグメントでシーケンスの条件の組み合わせをこのような入り乱れた使い方にする必要はないのですが,後で示すスプレッドシートで使うセグメントのコード作成の話で使いたいのであえてこのような入り乱れた設定にしました.通常は,ページは「正規表現」や「含む」などでいいと思います.ただ「完全一致」はURLに何かしらパラメータがついた場合に対象外になるので,それは避けた方がいいでしょう.なお,Google Analyticsの正規表現は「正規表現(regex)について」などを参照してください.

さて,これらセグメントを用いてGAのデフォルトの「集計 > チャネル」のレポート(期間:2021年4月1~2021年4月30日)を確認すると,図5のような集計結果でした

図5.GAのデフォルトの集計レポート(期間:2021年4月1~2021年4月30日)

図5.GAのデフォルトの集計レポート(期間:2021年4月1~2021年4月30日)

 

GAのデフォルト機能で動線と同様な機能としては,「行動 > 行動フロー」の行動フローのレポートがあります(図6参照).ユーザーのサイト流入後の閲覧ページをステップ毎に縦一列に並べたものとなっています(各ステップ,つまり縦の列には別々のページが並びますが,全体では同じページが何カ所も出現するような表示です).この記事で紹介する方法で取得するデータを使えば,これに近いものも作れるとは思います.

この行動フローはファイル出力もpdfファイルのみと使い勝手が悪く,GAを使うユーザーには好かれていない印象です.ただ,この記事のようにデータを取得して動線図を作ってみようと考えた場合(とくに図1(b)のような動線図の場合),この行動フローのレポートはどのような遷移のデータをとるべきかを検討するための参考に使えるでしょう.

図6のデモサイトの行動フローのレポートには,“このレポートは183セッション数(セッション数の85.4%)に基づいています。詳細”というメッセージが出ていました.データが少ないのにサンプリングがおきているのか?と思った(メッセージにあった「詳細」のリンクがアナリティクスヘルプの「データのサンプリングについて」だったのもあり)のですが,どうも原因は違うようです.このデモサイトでは.ユーザーエクスプローラで該当する期間内のユーザー(クライアントID)に対して「ユーザー削除」を実行したことがあります(図7参照).それが影響してこの行動フローのレポートで“(セッション数の85.4%)に基づいて”というメッセージがでているみたいです

図6.GAのチャネル別の行動フローレポート(期間:2021年4月1~2021年4月30日)

図6.GAのチャネル別の行動フローレポート(期間:2021年4月1~2021年4月30日)

 

図7.ユーザーエクスプローラのユーザー削除機能

図7.ユーザーエクスプローラのユーザー削除機能

 

4GoogleスプレッドシートとGAのアドオンの導入と使い方

GoogleスプレッドシートにGAのアドオンを追加することで,同じアカウント内のGAに接続できてそのデータをスプレッドシートに出力できます.ただ,その方法を解説しようとするとそれだけでひとつの記事になってしまいますので,それは他のサイトにお任せしようと思います.

なお,この話題に関しては以下のような記事が参考になると思います.

【Googleアナリティクス】アドオンを導入して簡単にレポートを作成しよう

 

できる逆引き Googleアナリティクス

Googleドライブのアドオンで最大7軸のレポートを生成する

 

Web担当者フォーラム Googleアナリティクスのレポートをサクッと自動化!

Googleアナリティクスの面倒なレポート作成をGoogleスプレッドシートで解消! (第1回)

高度な分析に役立つ! GoogleアナリティクスAPIでよく使う軸・指標、セグメントを紹介(第2回)

 

Google Workspaceラーニングセンター

アナリティクスのデータをスプレッドシートに移動する

 

5GoogleスプレッドシートとGAのアドオンでデータ取得しレポートを作る

スプレッドシートを新規に作成し,ツールバーで「アドオン > Google Analytics > Create new report」を選択する(図8参照)と,「Create a new report」のサイドバーが表示されます(図9参照).そこで,名前(Name)を入力(図9の赤枠内参照.この例では「ノーマル」としました),対象となるアカウント(Account)とプロパティ(Property)とビュー(View)を選び(図9の紫枠内参照),指標(Metrics)は「Session」とディメンション(Dimensions)は「Default Channel Grouping」を選び(図9の緑枠内参照),下の青色のボタン「Create Report」を押します.

"図8.ツールバーで「アドオン

 

図9.「Create a new report」のサイドバー

図9.「Create a new report」のサイドバー

 

すると図10のような「Report Configuration」シートができます.なお,「Report Configuration」シート上では「Metrics(指標)」は「ga:sessions」(図10のシートのB6セル参照),「Dimensions(ディメンション)」は「ga:channelGrouping」(図10のシートのB7セル参照)とコードで表示されます.指標やディメンションのこのような表示に関しては,

Google Analytics | Demos & Tools

UA Dimensions & Metrics Explorer  https://ga-dev-tools.web.app/dimensions-metrics-explorer/

で確認と取得ができます(上記サイトを表示させるにはGoogleアカウントでログインする必要があると思われます).

図10.作成された「Report Configuration」シート

図10.作成された「Report Configuration」シート

 

この記事で使うデモサイトのデータは2021年4月1~2021年4月30日の期間なので,データ期間の開始日(Start Date)と終了日(End Date)をそのように書き換えて(図11のシートB4とB5セル参照),ツールバーで「アドオン > Google Analytics > Run reports」と選択して(図11参照),レポートを作ってみます.すると,図12のような「ノーマル」という名のシートができ,そこにレポート(結果)が出力されます.

"図11.Start

 

図12.結果が出力された「ノーマル」シート

図12.結果が出力された「ノーマル」シート

 

図4のすべてのユーザーの値と図12の値を比べると,セッションの合計数は同じですが,チャネル別のデータはけっこう違っています.データ数が少ないのでどちらもサンプリングがおきていないのですが(図12のシートでA6セルの「Contains Sampled Data」に対してB6セルで「No」と表示されています).どちらが正確かは,記事「データポータルで「GAのユーザーエクスプローラより便利な(?)ユーザーレポート」を作ってみた」や「ExcelでGoogle Analyticsのデータを使いユーザーレポート(行動履歴レポート)を作ってみた」でのデータを使い検証すればわかるはず(ただし上記の記事のデータ期間と今回のデータ期間が異なるので実際は調整が必要)ですが,今回は割愛します.(この差が生じているのは,デモアカウントのデータに問題があるせいかもしれません.3節の最後に書いたのですが,このデモサイトでは,ユーザーエクスプローラで該当する期間内のユーザーに対して「ユーザー削除」を実行したことがあり,それが影響している可能性があります.違うアカウントのビューで同様のデータ取得をしてGAとスプレッドシートの差を比べましたが,図4と図12で起きたような差はありませんでした.多くの場合を調べたわけではないので正確なことは言えませんが,ユーザー削除をしていなくサンプリングがおきてなければおそらく図4と図12でのような大きさ差異が生じることはないと思います).

「Report Configuration」シートのB2セルからB13セルを選択しコピーして,それを図13のようにC, D, E列にペーストして(必要なだけ横の列にペーストして),区別できるようにReport Nameを修正します.図13のように「Report Configuration」シートに複数のレポートを並べて記入することで,レポート作成(「アドオン > Google Analytics > Run reports」)で同時に複数の結果が得られます(それぞれのレポートの結果はReport Nameの欄に書かれた名前のシートに出力されます).

図13.「Report Configuration」シート内でのコピー&ペーストなどの作業

図13.「Report Configuration」シート内でのコピー&ペーストなどの作業

 

「Report Configuration」シートの各レポートの「Segments」の欄(10行目)のセルに,集計で用いるセグメントのコード(図2~4のカスタム セグメントの内容をコード化したもの)を入力します(図14参照).

図14.各レポートのSegmentsの欄にコードを入力

図14.各レポートのSegmentsの欄にコードを入力

 

つまり,図14の「Report Configuration」シートの

Report Name「ノーマル」のSegments欄のB10セルは空欄,

Report Name「パターン1」のSegments欄のC10セルには,図2のカスタム セグメントの内容に対応する

sessions::sequence::ga:pagePath==/test_menu01.html

と入力し,

Report Name「パターン2」のSegments欄のD10セルには,図3のカスタム セグメントの内容に対応する

sessions::sequence::ga:pagePath==/test_menu01.html;->>ga:pagePath=@/test_menu03.html

と入力し,

Report Name「パターン」のSegments欄のE10セルには,図4のカスタム セグメントの内容に対応する

sessions::sequence::ga:pagePath==/test_menu01.html;->>ga:pagePath=@/test_menu03.html;->ga:pagePath=~^/test_thk\.html.*

と入力しています.

これら記述に関する説明は,2節で紹介したnoteの記事,

Google アナリティクス 動線図作成をスクリプトを書いて行う【Google Apps Script 応用編】

や,Googleの公式のヘルプ

Core Reporting API – セグメント

が参考になると思います.

ただ,上記を参考にしてコードを一から書かなくてすむ方法があります.GAのビューでカスタム セグメントとして作成したものは,

Google Analytics | Demos & Tools

Query Explorer  https://ga-dev-tools.web.app/query-explorer/

で,そのカスタム セグメントの内容のコードを取得できます(上記サイトを表示させるにはGoogleアカウントでログインする必要があると思われます).なお,GAがユニバーサルアナリティクスなので図15の黄色枠内を「UA」に選びます.

 

コードを取得するためには,上記のサイトでまずは該当するGAのアカウント・プロパティ・ビューを選択(図15の赤枠内参照)して,図15の緑枠内の「Show segment definitions instead of IDs」横のチェックボックスを図のように「ON」状態にします.そして図15の紫枠内で該当するセグメントを選択します.例えば,図4のパターン3のカスタムセグメント“[Pattern_3]”を選択すると,図16のように内容がコード化されたものが表示されます.後はそのコードをコピーして,スプレッドシートの該当するセルに貼り付ければいいというわけです.

図16.セグメントの内容がコード化された様子

図16.セグメントの内容がコード化された様子

 

Googleの公式ヘルプの「Core Reporting API – セグメント」などや,図4のカスタムセグメントの設定内容とGoogle Analytics | Demos & ToolsのQuery Explorerで取得したコードを見比べると,「完全一致」や「含む」や「正規表現に一致」や「の次のステップ」や「の直後のステップは」がどのような記述であるかの確認・理解が容易になります(それ故に図2~4のように入り乱れた設定のセグメントを作ってみました).

スプレッドシートで必要なセグメントのコードは,参考となるカスタムセグメントをGA上で1つ作りGoogle Analytics | Demos & ToolsのQuery Explorerでコードを取得することで,あとはそれを参考にしてコピー&ペースト・記述でつくる方法が効率的だと感じます(もちろん,ルールを理解していてバリバリ記述できるならそれでいいのですが).

セグメントのコードの記述で悩んだときは,以上のような方法を利用することで解決できるでしょう.

図14のスプレッドシートに対してGAのアドオンでレポート作成(「アドオン > Google Analytics > Run reports」)を実行すると,各レポートに関する結果が別シートで出力されます(図17参照).中身を確認してみると,パターン1,2,3のシートではContains Sampled Data」が「Yes」で,「Sample percentage」が「85.41%」となっていました(図18参照).

図17.レポート作成の実行と結果

図17.レポート作成の実行と結果

 

図18.パターン3のシートの内容

図18.パターン3のシートの内容

 

そこで,「Report Configuration」シートに戻り,図19のようにたたまれていた14行目から17行目を展開して,15行目の「Sampling Level」に「HIGHER_PRECISION」を入力して,再実行してみました(Sampling Leverなどのクエリパラメータの説明は「Core Reporting API – リファレンス ガイド」などを参照してください).結果は図18のときと変わらず,パターン1,2,3のシートではContains Sampled Data」が「Yes」で,「Sample percentage」が「85.41%」のままでした.

このスプレッドシートとアドオンの「Sample percentage」が「85.41%」より良くならないのは,GAの行動フローのレポート(図6参照)で“(セッション数の85.4%)に基づいて”というメッセージと関係している気がします.3節の最後でも書きましたが,このデモサイトではユーザーエクスプローラで該当する期間内のユーザー(クライアントID)に対して「ユーザー削除」を実行したことがあり,それが影響して行動フローのレポートで“(セッション数の85.4%)に基づいて”とメッセージがでていると思われます.つまり,この例で使ったデータでは「85.41%」よりはパーセンテージが上がらないのだと思います.また,違うアカウントのビューで同様のデータ取得をしてみましたが,セッションがデモサイトよりも多くても「Contains Sampled Data」が「No」(つまりサンプリングがされない)でGAのデータの差もない結果が得られました.

図19.「Sample percentage」を「HIGHER_PRECISION」にする

図19.「Sample percentage」を「HIGHER_PRECISION」にする

 

それぞれの結果が別のシートに出力されてしまいますが,各シートで結果が出力されるセル位置は同じですし,VLOOKUP等を使って1つのシートにまとめることは容易です(図20参照).

図20.ノーマル・パターン1・パターン2・パターン3の各シートの結果を「まとめ」シートで集計したもの

図20.ノーマル・パターン1・パターン2・パターン3の各シートの結果を「まとめ」シートで集計したもの

 

上記の結果のスプレッドシートは

[閲覧用]GAの動線図作成のための集計データ

で閲覧できます.

このようにデータをまとめられたなら後はどのツールを使ってどう表現するかの問題なので,実際の動線図の作成は省略します.

今回はデータ期間が固定でしたが,データ期間を直近30日とかにすれば,作成時に最新のデータが得られそれを元にしたレポートが自動で作れるようにもできるはずです(完全自動でなくても).

このレポートはディメンションをデフォルトチャネルグループで作りましたが,ディメンションの欄にユーザータイプを使うと新規ユーザーとリピーター別の(動線図の作成のための)セッションの集計,デバイスを使うとデスクトップとタブレットとモバイル別の(動線図の作成のための)セッションの集計ができます.したがって,必要なものをコピー&ペーストと書き換え(置換)などで簡単に複製して作れます.

 

6.おわりに

GoogleスプレッドシートとGAのアドオンで,GAの動線図を作成するための各ページ遷移のセッションの取得方法を説明しました.プログラムになれている方はGASやPythonなどを使った方がもっと効率的に管理・運用できると思いますが,スプレッドシートとアドオンの組み合わせもけっこう使い勝手がよいと思います.

記事「データポータルで作るGAの目標到達プロセスのレポート(メリットあり)」で紹介したデータポータルのレポートで作った動線図(目標到達プロセスのステップ)は,コントロールボタンで条件を自由に追加してデータを見ることができるメリットがあります(プログラムやスプレッドシートとアドオンの組み合わせでは,データ取得前にどのような条件,つまりディメンションやフィルタを与えるかを決めておく必要があります).ですが,データポータルでは1つのページで扱えるデータ(テーブルやスコアカードなど)の上限がけっこう厳しく,さらにそれら数が増えるほど表示に時間もかかります.

動線図を作るのに,プログラムでデータを取得するか,スプレッドシートとアドオンでデータを取得するか,データポータルで全部作ってしまうかは,ケースバイケースで選択すればよいと思います.