事前準備
AnalyticsAPIの有効化
- スクリプトエディタ上部メニューの「リソース」→「Googleの拡張サービス」を選択
- GoogleAnalyticsAPI(とDriveAPIもどうせ使うので)を有効化
- GoogleディベロッパーコンソールでGoogleAnalyticsAPI(とDriveAPIもどうせ使うので)を有効化
Core Reporting API の利用
参考
- Analytics Service - Google Apps Script — Google Developers
- Core Reporting API - Reference Guide - Google Analytics — Google Developers
- Automated Access to Google Analytics Data in Google Sheets - Google Analytics — Google Developers
注意
- 開発する場合には、事前に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レポート画面の「カスタム」「非サンプリングレポート」で確認できる。
参考
- Unsampled Reports - Google Analytics — Google Developers
- Unsampled Reports: insert - Google Analytics — Google Developers
サンプルスクリプト
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");
}