スプレッドシートのURL一覧にコンテンツグループを一括でラベリングするGAS

GAでコンテンツグループってあるじゃないですか。

あれ特に、商品点数の多いECサイトとか、広告でパラメータつけまくってるサイトで流入分析とか、経路分析とかするのに便利なんですけど、2こくらい結構きびしい難点があるんですよね。

まず1つ目は、お客さんのサイトだとちゃんと計測されてる保証がぜんぜん無い。計測されている時点でありがたいのは確かなんだけど、not set になってるページビューが全体の半分以上あったりするとさすがに意味なくない?ってなる。

2つ目は、ぜんぶのURL系に使えるわけじゃないこと。たぶん page_view イベントにしか紐づけられないからか知らんけど、たとえばリファラーとか、ランディングページとか、そういうのをコンテンツグループごとに見たいとか思っても見られない。経路データ探索とか、絶対にコンテンツグループごとに見れた方が良いんだけど、そういうのは無い。

こんなん見てもふわっとしかわからんよね、、、、。

工夫すれば使えるんですけど。工夫しないと使えないっていう。なんでだよ。

なので例えば、商品ページから流入したユーザーがその後どこに遷移するのか?みたいな分析をするときに、探索のウェブUIだけだとやりようがなくて、そういうときは一旦ページロケーションごとのpvとかユーザー数とかをスプレッドシートで出力して、そっちで集計するのをよくやります。

ただ、グループの種類が3つとかだったらそんなに手間なく集計できるんだけど、10種類とかいろいろ種類があるときとか、URLについても規則性がまあまあ無いケースとかだと手動でコンテンツグループをラベリングして集計するのはさすがにけっこう無理あるので、そういうときに下記のようなGASを使う。これを使えばURLが何万行ってあっても一発です。

JavaScript
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氏まじで相性いいのでおすすめです。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です