More than 1 year has passed since last update.

事前準備

AnalyticsAPIの有効化

01.png

  • スクリプトエディタ上部メニューの「リソース」→「Googleの拡張サービス」を選択

02.png

  • GoogleAnalyticsAPI(とDriveAPIもどうせ使うので)を有効化

03.png

  • GoogleディベロッパーコンソールでGoogleAnalyticsAPI(とDriveAPIもどうせ使うので)を有効化

Core Reporting API の利用

参考

注意

  • 開発する場合には、事前にQueryExplorerを使って諸条件を確認しておくのがよい

サンプルスクリプト

try{
  var gaNums = Analytics.Data.Ga.get(
    'ga:99999', // ビューID
    '2015-01-01', // 開始日
    '2015-01-31', // 終了日日
    "ga:pageviews", // 指標
    {
      'dimensions': 'ga:yearMonth,ga:pageTitle',
      'filters' : 'ga:pagePath=~/test/",
      "sort": "-ga:pageviews",
      'samplingLevel': 'HIGHER_PRECISION'
    }
  );
}catch(e){
   Logger.log("GAのデータ取得に失敗しました:" + e.message);
}

非サンプリングレポートの要求

  • Google アナリティクスプレミアムのみ対応
  • リクエストの結果はGAレポート画面の「カスタム」「非サンプリングレポート」で確認できる。

参考

サンプルスクリプト

try{

  var api_result = Analytics.Management.UnsampledReports.insert(
    {
      'title':      "ファイル名",
      'start-date': "2015-01-01",
      'end-date':   "2015-01-01",
      'metrics':    "ga:pageviews",
      'dimensions': "ga:pagePath",
      'filters':    "ga:pagePath=~/test/",
    },
    "99999999",      // アカウントID
    "UA-54300733-1", // プロパティID
    "91666585"       // ビューID("ga:"は不要)
  );
} catch(e){
  Logger.log( "失敗しました:" + e.message );
}

カスタムディメンションを大量に追加

参考

注意

  • APIのQuotaに注意、ユーザあたりの秒間リクエスト数を10まで上げておく

使い方

次のようなシートを用意して「CD一覧」と名付け、プルダウンメニューの「カスタムディメンション」→「追加」を指定

A B C D E F
1 name scope active プロパティID UA-XXXXX-XX
2 名称 HIT TRUE
  • 1行目のアルファベット・1列目の連番はスプレッドシートのアドレスを示す
  • A列にカスタムディメンションの名称
  • B列にスコープ(USRE, SESSION, HIT)を指定
  • C列にアクティブ(TRUE,FALSE)を指定
  • F1セルにプロパティIDを指定
  • 作成したい数だけ行を追加
    • ただし作成できるカスタムディメンション数は標準で20、プレミアム版で200まで

スクリプトの内容

addCustomDimensions.js

function onOpen() {
  var ui = SpreadsheetApp.getUi();
  // Or DocumentApp or FormApp.
  ui.createMenu('カスタムディメンション')
    .addItem('追加', 'insertCustomeDimensions')
    .addToUi();
  ;
}

function insertCustomeDimensions() {

  // アカウントID/プロパディIDを取得
  var ids = getIds_();
  if( ! ids ){
    return;
  }

  // シートにあるカスタムディメンションの一覧を取得
  var cds = getCds_();

  // カスタムディメンションの追加
  for( var i = 0; i < cds.length; i++ ){

    try{
      var api_result = Analytics.Management.CustomDimensions.insert(
        {
          "name":   cds[i]["name"],
          "scope":  cds[i]["scope"],
          "active": cds[i]["active"]
        },
        ids.account,
        ids.property
      );
      Logger.log( JSON.stringify(api_result,null,2) );
      Utilities.sleep(500);
    } catch(e){
      Logger.log(e);
    }
  }
}

/*
* properties
*/

var config_ = {
  "property_id": "F1",
  "sheetname": "CD一覧",
  "cd_list" : "A1:C201"
}

var ss_ = SpreadsheetApp.getActiveSpreadsheet();
var sheet_ = ss_.getSheetByName(config_["sheetname"]);

/*
* private: カスタムディメンションの一覧を取得
*/

function getCds_(){

  // プロパティIDとアカウントIDを取得
  var values = sheet_.getRange( config_["cd_list"] ).getValues();

  // 連想配列に組み直し
  var fields;
  var cds = [];
  for ( var i = 0; i < values.length; i++ ){
    // ヘッダ行
    if( ! fields ){
      fields = values[i];
      continue;
    }
    // 値を確認
    if( values[i][0] == "" || values[i][1] == "" || values[i][2] == "" ){
      continue ;
    }
    // 値を転記
    var row = {};
    for( var j = 0; j < fields.length; j++ ){
      row[ fields[j] ] = values[i][j];
    }
    cds.push(row);
  }

  // 結果を返す
  return cds;

}

/*
* private: アカウントIDとプロパティIDの取得
*/

function getIds_(){

  // プロパティIDとアカウントIDを取得
  var property_id = sheet_.getRange( config_["property_id"] ).getValue();
  var match = property_id.match(/UA-(\d+)-\d+$/);
  if( ! match ){
    return;
  }
  var account_id = match[1];
  return { property : property_id, account : account_id };

}

Google アナリティクスのユーザ追加

試したことはないが、Google グループで見つけたので転記しておく。
https://groups.google.com/forum/#!topic/google-apps-api-japan/WapBGUv7l3U

addUsers.js
function myFunction() {
  var eul = Analytics.newEntityUserLink();

  eul.permissions = Analytics.newEntityUserLinkPermissions();
  eul.permissions.local = ["EDIT","MANAGE_USERS"];

  eul.userRef = Analytics.newUserRef();
  eul.userRef.email = "exa...@example.com"; //変えないと動かないです

  Analytics.Management.AccountUserLinks.insert(eul, "your account id");
}