GAでコンテンツグループってあるじゃないですか。
あれ特に、商品点数の多いECサイトとか、広告でパラメータつけまくってるサイトで流入分析とか、経路分析とかするのに便利なんですけど、2こくらい結構きびしい難点があるんですよね。
まず1つ目は、お客さんのサイトだとちゃんと計測されてる保証がぜんぜん無い。計測されている時点でありがたいのは確かなんだけど、not set になってるページビューが全体の半分以上あったりするとさすがに意味なくない?ってなる。
2つ目は、ぜんぶのURL系に使えるわけじゃないこと。たぶん page_view イベントにしか紐づけられないからか知らんけど、たとえばリファラーとか、ランディングページとか、そういうのをコンテンツグループごとに見たいとか思っても見られない。経路データ探索とか、絶対にコンテンツグループごとに見れた方が良いんだけど、そういうのは無い。
こんなん見てもふわっとしかわからんよね、、、、。
工夫すれば使えるんですけど。工夫しないと使えないっていう。なんでだよ。
なので例えば、商品ページから流入したユーザーがその後どこに遷移するのか?みたいな分析をするときに、探索のウェブUIだけだとやりようがなくて、そういうときは一旦ページロケーションごとのpvとかユーザー数とかをスプレッドシートで出力して、そっちで集計するのをよくやります。
ただ、グループの種類が3つとかだったらそんなに手間なく集計できるんだけど、10種類とかいろいろ種類があるときとか、URLについても規則性がまあまあ無いケースとかだと手動でコンテンツグループをラベリングして集計するのはさすがにけっこう無理あるので、そういうときに下記のようなGASを使う。これを使えばURLが何万行ってあっても一発です。
function classifyContentGroups() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var urls = sheet.getRange('A8:A' + sheet.getLastRow()).getValues(); // URLがA列にあると仮定
var contentGroups = [];
for (var i = 0; i < urls.length; i++) {
var url = urls[i][0];
var contentGroup = getContentGroup(url);
contentGroups.push([contentGroup]);
}
// 新しいコンテンツグループ列を書き込む(ここではB列に書き込むと仮定)
sheet.getRange('B8:B' + (contentGroups.length + 7)).setValues(contentGroups);
}
function getContentGroup(url) {
if (/\/product\//.test(url)) return '商品詳細ページ';
// グループごとにマッチ条件を正規表現で記載する
return 'その他'; // どれにも当てはまらない場合
}
例によってこれもGPT氏に書いてもらってる。GASとGPT氏まじで相性いいのでおすすめです。