Edited at

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