🙆♀️
LPOのための予実をGASで作成
制作したもの
マンスリー・ウイークリーで数値の見える化をした
- 分かったこと
- LPのページごとに流入経路別でCV数からUU数直帰率などの数字の可視化
使用したツール
GAS
参考にしたもの
手順
1.GASでアナリティクスと連携し、dailyとランディングページでフィルタリングし主要指標を引っこ抜く
2.GASでアナリティクスと連携し、monthlyとランディングページでフィルタリングし主要指標を引っこ抜く
2.定期的にGASを起動させる(週1回)
3.別シートでquery関数でランディングページごとに引っ張る
4.1つのシートにsumif、avgif関数で繋ぎ合わる
苦労した箇所
直帰率や離脱率はmonthlyで取らないとデイリーごとの計算だとUUが異なるので精緻ではなくなる。
セッション時間はタイム関数なのでsumなど計算ができない。月1なのでやむなく手動で対応することにした。
正規表現で完全一致とorを同時にする方法がわからず色々探した
下記が参考になった。
また、なぜか下層ページがGASで抜き取れない日時や月があったため一部手動で対応した。
下記ソースコード
function getGoogleAnalytics() {
//コンテナバインドスクリプトに紐づくスプレッドシートのアクティブシートを取得
let spreadSheet = SpreadsheetApp.getActiveSpreadsheet();
let sheet = spreadSheet.getSheetByName('LPTOP_GAS');
//スプレッドシートからグーグルアナリティクスのビューIDと開始日、終了日を取得する
let setting = sheet.getRange(2, 1, 1, 3).getDisplayValues();
//グーグルアナリティクスから取得する指標データを設定する
let metrics = "ga:pageviews,ga:sessions,ga:users,ga:OrganicSearches,ga:PageviewsPerSession,ga:NewUsers,ga:bounceRate,ga:exitRate,ga:avgSessionDuration,ga:goal1Completions";
//グーグルアナリティクスのディメンションでページタイトルを設定する
let dimensions = "ga:landingPagePath,ga:sourcemedium,ga:Date";
//表示順はページビュー順にソートする
let sortType = "-ga:goal1Completions";
//Google Analytics APIリクエストして、グーグルアナリティクスのデータを取得する
let gaData = Analytics.Data.Ga.get(
setting[0][0],
setting[0][1],
setting[0][2],
metrics,
{
'dimensions': dimensions,
'sort': sortType
}
).getRows();
//Google Analytics APIから取得した2次元配列のデータをスプレッドシートに書き込む
sheet.getRange(4, 1, gaData.length, gaData[0].length).setValues(gaData);
}
感想
手を動かすのはとても簡単にできたが、設計するのに右往左往してしまった。
最終アウトプットを事前に具体的にイメージする必要があると感じた。
Discussion