0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

複数のGA4のプロパティをGASで自動作成

Posted at

本記事は2022年7月時点での内容になります。最新情報については公式サイトなどを確認願います。

Google Analyticsはユニバーサルアナリティクス(UA)にはビューがあったので、特定の人に特定のディレクトリだけ見せたいなどの時に、ビューを活用していたと思います。しかしGA4にはビューがないため、別プロパティを作成する人も多いでしょう。

※Stream IDを活用して、閲覧者にはGA4にはアクセスさせずにデータポータルを使ってStream IDでビューのようなやり方をすることも可能です。

Google Analytics Admin API、Google Sheet、Google Apps Scriptで作成

全世界に運航しているとある航空会社のUAではビューで国別のフライトを分けていたのですが、GA4ではプロパティで分ける事になり、約20個のGA4プロパティを作成し、各プロパティに約30個のカスタムディメンションを作成しなければなりませんでした。

20×30=600個ものカスタムディメンションを作成しなければなりません。1個20秒で作成したとしても3時間以上かかりますし、どこかで間違えを起こしても見落とす可能性大なのでかなり疲弊します。そこで今回はGoogle Apps ScriptでGoogle Analytics Admin APIを使用して一括作成します。

作業手順

全てを一気にやることも可能ですが、今回はわかりやすくするためにプロパティの作成とカスタムディメンションの作成を分けて行います。手順は下記になります。

  1. Google SheetにGA4プロパティに必要な情報の一覧を作成
  2. Google Apps Scriptで上記を読み込み、複数のGA4プロパティを作成
  3. Google SheetにGA4プロパティの一覧とカスタムディメンションの一覧を作成(次回)
  4. Google Apps Scriptで上記を読み込み、各プロパティにカスタムディメンションを作成(次回)

Google SheetにGA4プロパティに必要な情報の一覧を作成

Google Sheetに「properties」シートを作成し、そのシートのA列~E列に下記を記入していきます。

  • A列:アカウントID(※accounts/アカウントIDという記述にしてください)
  • B列:プロパティ名
  • C列:カテゴリ(カテゴリ一覧を参照して当てはまるものを記入 今回は旅行なのでTRAVEL)
  • D列:タイムゾーン
  • E列:通貨
  • F列:空欄(プロパティが作成されたプロパティIDがここに入ります)

image.png

Google Apps Scriptでプロパティを自動生成

今回はGoogle Apps Script(GAS)を使いますが、スクリプトの流れは以下になります。

  1. 上記のGoogle Sheetsから必要な情報を読み込む
  2. GA4プロパティを1つずつ作成

Google Sheetsから必要な情報を読み込む

さきほどGoogle Sheetの「properties」シートに作成した情報を読み込む関数getPropetiesConfig()を作成します。

※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が使用可能になります。

image.png

Serviceから「Google Analytics Admin API」を検索して追加。(Identifierはそのまま「AnalyticsAdmin」にしておきます。

image.png

追加したら「Service」の下に「AnalyticsAdmin」が表示されます。

image.png

無事Google Analytics Admin APIを追加できたら、createProperty()関数を記述します。AnalyticsAdmin.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");
  }
}

参考:https://developers.google.com/analytics/devguides/config/admin/v1/rest/v1alpha/properties/create

作成したプロパティの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プロパティが作成されます。

image.png

そして、Google SheetのF列にプロパティIDが追記されている事を確認できます。

image.png

プロパティ名やカテゴリ、タイムゾーン、通貨もきちんと反映されていればOKです。

image.png

P.S 別件で40個のプロパティを作成することになりました。。。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?