Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
67
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

@sebisawa

GoogleAppsScriptでGoogleAnalyticsのAPIを利用

事前準備

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
67
Help us understand the problem. What are the problem?