ユニバーサルアナリティクス(UA)にはビューがあったので、特定の人に特定のディレクトリだけ見せたいなどの時に、ビューを活用していたと思います。しかしGA4にはビューがないため、別プロパティを作成する人も多いでしょう。
※Stream IDを活用して、閲覧者にはGA4にはアクセスさせずにデータポータルを使ってStream IDでビューのようなやり方をすることも可能です。
全世界に運航しているとある航空会社のUAではビューで国別のフライトを分けていたのですが、GA4ではプロパティで分ける事になり、約20個のGA4プロパティを作成し、各プロパティに約30個のカスタムディメンションを作成しなければなりませんでした。
Google Analytics Admin API、Google Sheet、Google Apps Scriptで作成
20×30=600個ものカスタムディメンションを作成しなければなりません。1個20秒で作成したとしても3時間以上かかりますし、どこかで間違えを起こしても見落とす可能性大なのでかなり疲弊します。そこで今回はGoogle Apps ScriptでGoogle Analytics Admin APIを使用して一括作成します。
全てを一気にやることも可能ですが、今回はわかりやすくするためにプロパティの作成とカスタムディメンションの作成を分けて行います。
手順は下記になります。
- Google SheetにGA4プロパティに必要な情報の一覧を作成
- Google Apps Scriptで上記を読み込み、複数のGA4プロパティを作成
- Google SheetにGA4プロパティの一覧とカスタムディメンションの一覧を作成(次回)
- Google Apps Scriptで上記を読み込み、各プロパティにカスタムディメンションを作成(次回)
Google SheetにGA4プロパティに必要な情報の一覧を作成
Google Sheetに「properties」シートを作成し、そのシートのA列~E列に下記を記入していきます。
- A列:アカウントID(※accounts/アカウントIDという記述にしてください)
- B列:プロパティ名
- C列:カテゴリ(カテゴリ一覧を参照して当てはまるものを記入 今回は旅行なのでTRAVEL)
- D列:タイムゾーン
- E列:通貨
- F列:空欄(プロパティが作成されたプロパティIDがここに入ります)
Google Apps Scriptでプロパティを自動生成
今回はGoogle Apps Script(GAS)を使いますが、スクリプトの流れは以下になります。
- 上記のGoogle Sheetsから必要な情報を読み込む
- GA4プロパティを1つずつ作成
Google Sheetsから必要な情報を読み込む
さきほどGoogle Sheetの「properties」シートに作成した情報を読み込む関数を作成します。
※sheet.getRange(2,1,tmpLastRow-1,5).getValues()でもあっさり取得できますが、プロパティ作成後にプロパティIDをGoogle Sheetに追記したいことなどから下記のように1つずつ読み込んでいます。
const FILEKEY ="abcdefghijklmno"; // GoogleSheetのキー(URLの一部分) 例:https://docs.google.com/spreadsheets/d/abcdefghijklmno/edit#gid=0
function getPropetiesConfig(){
var sheetName = 'properties';
var retConfig = [];
var spreadsheet = SpreadsheetApp.openById(FILEKEY);
// var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var sheet = spreadsheet.getSheetByName(sheetName);
var tmpLastRow = sheet.getLastRow();
// var retConfig= sheet.getRange(2,1,tmpLastRow-1,5).getValues();
// return retConfig;
for(var i = 2;i <= sheet.getLastRow();i++){
var val = sheet.getRange(i, 1).getValue();
if (!val) {
break;
}else{
var tmp ={};
tmp['row'] = i;
tmp['parent'] = sheet.getRange(i,1).getValue();
tmp['displayName'] = sheet.getRange(i,2).getValue();
tmp['industryCategory'] = sheet.getRange(i,3).getValue();
tmp['timeZone'] = sheet.getRange(i,4).getValue();
tmp['currencyCode'] = sheet.getRange(i,5).getValue();
retConfig.push(tmp);
}
}
return retConfig;
}
GA4プロパティを作成
ServiceからGoogle Analytics Admin APIを追加
GA4のプロパティ作成などをするには「Google Analytics Admin API」が必要になります。GASの「Service」から追加することでGoogle Analytics Admin APIが使用可能になります。
Serviceから「Google Analytics Admin API」を検索して追加。(Identifierはそのまま「AnalyticsAdmin」にしておきます。
追加したら「Service」の下に「AnalyticsAdmin」が表示されます。
無事Google Analytics Admin APIを追加できたら、以下の関数を記述します。AnalyticsAdmin.Properties.create関数でプロパティを作成します。
参考:https://developers.google.com/analytics/devguides/config/admin/v1/rest/v1alpha/properties/create
function createProperty(parent, displayName, industryCategory, timeZone, currencyCode){
try{
var property = {
"parent": parent,
"displayName": displayName,
"industryCategory": industryCategory,
"timeZone": timeZone,
"currencyCode":currencyCode,
}
var property = AnalyticsAdmin.Properties.create(property);
return property;
}catch(e){
Logger.log(e.message);
throw ("createPropery:" + displayName + "\te.message");
}
}
作成したプロパティのIDを取得
上記のvar property = AnalyticsAdmin.Properties.create(property) を実行後、propertyには新しく生成されたGA4プロパティが入るので、property.nameでプロパティIDを取得できますが、”properties/”が前に含まれているため取り除く必要があります。
GA4プロパティの作成を繰り返して、プロパティIDをGoogle Sheetに追記
getPropetiesConfig()関数で取得したプロパティID個数分、createProperty関数を実行して、結果を再びGoogle Sheetに追記します。
function main(){
var properties= getPropetiesConfig();
var retProps = [];
for(var i=0;i<properties.length;i++){
var property = properties[i];
property = createProperty(property);
retProps.push(property);
var propertyId = property.name.replace("properties/",""); // プロパティIDからproperties/を削除
Logger.log(p.row +"\t" + p.displayName +"\t" + propertyId);
setPropertyIdToSheet(p.row, propertyId);
}
// Logger.log(retProps);
}
/*
* 結果をpropertiesシートのF列に追記する
*/
function setPropertyIdToSheet(row, propertyId){
var sheetName = 'properties';
var retConfig = [];
var spreadsheet = SpreadsheetApp.openById(FILEKEY);
var sheet = spreadsheet.getSheetByName(sheetName);
sheet.getRange(row, 6).setValue(propertyId);
return true;
}
上記のmainを実行するとGoogle Sheetで記入したアカウントの下にGA4プロパティが作成されている事を確認できました。
そして、Google SheetのF列にプロパティIDが追記されている事も確認できました。
プロパティ名やカテゴリ、タイムゾーン、通貨もきちんと反映されています。
次回はカスタムディメンションの自動作成について説明していきます。
P.S 別件で40個のプロパティを作成することになりました。。。
コメント