
Google Analytics レポート (Domain ranking)
Google Analytics にアクセスし、ランキングレポート(PV / Referrer / Domain)を取得します。期間やフィルタ条件を指定することが可能で、Google Analytics にログインしなくても、定期的なレポートを取得できるようになります。
2017-07-24 © Questetra, Inc. (MIT License)
https://support.questetra.com/ja/addons/googleanalytics-reportsdomain/
Configs
- A: OAuth2通信許可設定名 (←[OAuth 2.0 設定]) *
- B: Analytics ViewId をセットしてください *
- C: アクセスログの開始日が格納されている日付型データを選択してください *
- D: アクセスログの終了日が格納されている日付型データを選択してください *
- E: ランキング件数をセットしてください (例 20) *
- F: Ranking フィルタをセットしてください (例 ga:pagePath=~/2016/|/2017/)
- G: ランキング一覧が格納される文字列型データを選択してください (更新)
- X: 通信ログが格納される文字列型データを選択してください (更新)
Script
//// == 工程コンフィグの参照 / Config Retrieving ==
var oauth2 = configs.get( "conf_OAuth2" ) + "";
var viewId = configs.get( "conf_ViewId" ) + "";
var numOfRanking = configs.get( "conf_NumOfRanking" ) - 0;
var rankingFilter = configs.get( "conf_RankingFilter" ) + "";
var dataIdC = configs.get( "conf_DataIdC" ); // (returns key)
var dataIdD = configs.get( "conf_DataIdD" ); // (returns key)
var dataIdG = configs.get( "conf_DataIdG" ); // (returns key)
var dataIdX = configs.get( "conf_DataIdX" ); // (returns key)
//// == ワークフローデータの参照 / Data Retrieving ==
var startDate = data.get( dataIdC ) + ""; // (YYYY-MM-DD)
var endDate = data.get( dataIdD ) + ""; // (YYYY-MM-DD)
//// == 演算 / Calculating ==
var requestObj = {};
requestObj.reportRequests = [];
requestObj.reportRequests[0] = {};
requestObj.reportRequests[0].viewId = viewId;
requestObj.reportRequests[0].dateRanges = [];
requestObj.reportRequests[0].dateRanges[0] = {};
requestObj.reportRequests[0].dateRanges[0].startDate = startDate;
requestObj.reportRequests[0].dateRanges[0].endDate = endDate;
requestObj.reportRequests[0].dimensions = [];
requestObj.reportRequests[0].dimensions[0] = {};
requestObj.reportRequests[0].dimensions[0].name = "ga:networkDomain";
requestObj.reportRequests[0].dimensions[1] = {};
requestObj.reportRequests[0].dimensions[1].name = "ga:pageTitle";
requestObj.reportRequests[0].metrics = [];
requestObj.reportRequests[0].metrics[0] = {};
requestObj.reportRequests[0].metrics[0].expression = "ga:pageviews";
requestObj.reportRequests[0].metrics[1] = {};
requestObj.reportRequests[0].metrics[1].expression = "ga:sessions";
if( rankingFilter !== "" ){
requestObj.reportRequests[0].filtersExpression = rankingFilter;
}
requestObj.reportRequests[0].orderBys = [];
requestObj.reportRequests[0].orderBys[0] = {};
requestObj.reportRequests[0].orderBys[0].sortOrder = "DESCENDING";
requestObj.reportRequests[0].orderBys[0].fieldName = "ga:pageviews";
requestObj.reportRequests[0].orderBys[1] = {};
requestObj.reportRequests[0].orderBys[1].sortOrder = "DESCENDING";
requestObj.reportRequests[0].orderBys[1].fieldName = "ga:sessions";
requestObj.reportRequests[0].pageSize = numOfRanking;
var accessLog = "";
var token = httpClient.getOAuth2Token( oauth2 );
var uri = "https://analyticsreporting.googleapis.com/v4/reports:batchGet";
var response = httpClient.begin()
.bearer( token )
.body( JSON.stringify( requestObj ), "application/json" )
.post( uri );
accessLog += "---POST request--- " + response.getStatusCode() + "\n";
accessLog += response.getResponseAsString() + "\n";
var rankingStr = "";
var statusCode = response.getStatusCode() + "";
if( statusCode == "200" ){
var reportObj = JSON.parse( response.getResponseAsString() );
rankingStr += reportObj.reports[0].columnHeader.metricHeader.metricHeaderEntries[0].name + "\t";
rankingStr += reportObj.reports[0].columnHeader.metricHeader.metricHeaderEntries[1].name + "\t";
rankingStr += reportObj.reports[0].columnHeader.dimensions[0] + "\t";
rankingStr += reportObj.reports[0].columnHeader.dimensions[1] ;
rankingStr += "\n";
for( var i = 0; i < reportObj.reports[0].data.rows.length; i++ ){
rankingStr += reportObj.reports[0].data.rows[i].metrics[0].values[0] + "\t";
rankingStr += reportObj.reports[0].data.rows[i].metrics[0].values[1] + "\t";
rankingStr += reportObj.reports[0].data.rows[i].dimensions[0] + "\t";
rankingStr += reportObj.reports[0].data.rows[i].dimensions[1];
rankingStr += "\n";
}
}
//// == ワークフローデータへの代入 / Data Updating ==
retVal.put( dataIdG, rankingStr );
if( dataIdX !== "" ){
retVal.put( dataIdX, accessLog );
}//// == 工程コンフィグの参照 / Config Retrieving ==
var oauth2 = configs.get( "conf_OAuth2" ) + "";
var viewId = configs.get( "conf_ViewId" ) + "";
var numOfRanking = configs.get( "conf_NumOfRanking" ) - 0;
var rankingFilter = configs.get( "conf_RankingFilter" ) + "";
var dataIdC = configs.get( "conf_DataIdC" ); // (returns key)
var dataIdD = configs.get( "conf_DataIdD" ); // (returns key)
var dataIdG = configs.get( "conf_DataIdG" ); // (returns key)
var dataIdX = configs.get( "conf_DataIdX" ); // (returns key)
//// == ワークフローデータの参照 / Data Retrieving ==
var startDate = data.get( dataIdC ) + ""; // (YYYY-MM-DD)
var endDate = data.get( dataIdD ) + ""; // (YYYY-MM-DD)
//// == 演算 / Calculating ==
var requestObj = {};
requestObj.reportRequests = [];
requestObj.reportRequests[0] = {};
requestObj.reportRequests[0].viewId = viewId;
requestObj.reportRequests[0].dateRanges = [];
requestObj.reportRequests[0].dateRanges[0] = {};
requestObj.reportRequests[0].dateRanges[0].startDate = startDate;
requestObj.reportRequests[0].dateRanges[0].endDate = endDate;
requestObj.reportRequests[0].dimensions = [];
requestObj.reportRequests[0].dimensions[0] = {};
requestObj.reportRequests[0].dimensions[0].name = "ga:hostname";
requestObj.reportRequests[0].dimensions[1] = {};
requestObj.reportRequests[0].dimensions[1].name = "ga:pagePath";
requestObj.reportRequests[0].dimensions[2] = {};
requestObj.reportRequests[0].dimensions[2].name = "ga:pageTitle";
requestObj.reportRequests[0].metrics = [];
requestObj.reportRequests[0].metrics[0] = {};
requestObj.reportRequests[0].metrics[0].expression = "ga:pageviews";
requestObj.reportRequests[0].metrics[1] = {};
requestObj.reportRequests[0].metrics[1].expression = "ga:sessions";
if( rankingFilter !== "" ){
requestObj.reportRequests[0].filtersExpression = rankingFilter;
}
requestObj.reportRequests[0].orderBys = [];
requestObj.reportRequests[0].orderBys[0] = {};
requestObj.reportRequests[0].orderBys[0].sortOrder = "DESCENDING";
requestObj.reportRequests[0].orderBys[0].fieldName = "ga:pageviews";
requestObj.reportRequests[0].orderBys[1] = {};
requestObj.reportRequests[0].orderBys[1].sortOrder = "DESCENDING";
requestObj.reportRequests[0].orderBys[1].fieldName = "ga:sessions";
requestObj.reportRequests[0].pageSize = numOfRanking;
var accessLog = "";
var token = httpClient.getOAuth2Token( oauth2 );
var uri = "https://analyticsreporting.googleapis.com/v4/reports:batchGet";
var response = httpClient.begin()
.bearer( token )
.body( JSON.stringify( requestObj ), "application/json" )
.post( uri );
accessLog += "---POST request--- " + response.getStatusCode() + "\n";
accessLog += response.getResponseAsString() + "\n";
var rankingStr = "";
var statusCode = response.getStatusCode() + "";
if( statusCode == "200" ){
var reportObj = JSON.parse( response.getResponseAsString() );
rankingStr += reportObj.reports[0].columnHeader.metricHeader.metricHeaderEntries[0].name + "\t";
rankingStr += reportObj.reports[0].columnHeader.metricHeader.metricHeaderEntries[1].name + "\t";
rankingStr += reportObj.reports[0].columnHeader.dimensions[0];
rankingStr += reportObj.reports[0].columnHeader.dimensions[1] + "\t";
rankingStr += reportObj.reports[0].columnHeader.dimensions[2];
rankingStr += "\n";
for( var i = 0; i < reportObj.reports[0].data.rows.length; i++ ){
rankingStr += reportObj.reports[0].data.rows[i].metrics[0].values[0] + "\t";
rankingStr += reportObj.reports[0].data.rows[i].metrics[0].values[1] + "\t";
rankingStr += reportObj.reports[0].data.rows[i].dimensions[0];
rankingStr += reportObj.reports[0].data.rows[i].dimensions[1] + "\t";
rankingStr += reportObj.reports[0].data.rows[i].dimensions[2];
rankingStr += "\n";
}
}
//// == ワークフローデータへの代入 / Data Updating ==
retVal.put( dataIdG, rankingStr );
if( dataIdX !== "" ){
retVal.put( dataIdX, accessLog );
}
Download
- GoogleAnalytics-reportsDomain.xml
- スクリプトエンジンとして「Rhino(廃止予定)」が指定されているため、アプリにインストールしても設定エラーとなります
- 利用するには、スクリプトエンジンの変更、およびそれに伴うスクリプト修正が必要です
- 対応方法は、「スクリプトエンジン Rhino 廃止のお知らせ」を参考にしてください
- 修正版は準備中です
Capture

Notes
- 事前に Google Developers Console にて「Google Analytics Reporting API」を有効にし、「クライアントID」と「クライアントシークレット」を取得します
See also
- 2017-07-31 (自社サイト運用状況報告): 第546話:月曜朝の Analytics API リクエスト(1)
- 2017-08-07 (自社サイト運用状況報告): 第547話:月曜朝の Analytics API リクエスト(2)
- 2017-08-14 (自社サイト運用状況報告): 第548話:月曜朝の Analytics API リクエスト(3)