Help us understand the problem. What is going on with this article?

GoogleAppsScriptでGoogleAnalyticsのAPIを利用

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");
}
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした