LoginSignup
65
68

More than 5 years have passed since last update.

GoogleAppsScriptでGoogleAnalyticsのAPIを利用

Last updated at Posted at 2015-01-04

事前準備

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");
}
65
68
1

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
65
68