Google Analytics レポート

Google Analytics にアクセスし、ランキングレポート(PV / Referrer / Domain)を取得します。期間やフィルタ条件を指定することが可能で、Google Analytics にログインしなくても、定期的なレポートを取得できるようになります。

    A. OAuth2通信許可設定名 (←[OAuth 2.0 設定])単一行記述必須
    B. Analytics ViewId をセットしてください単一行記述必須
    C. アクセスログの開始日が格納されている日付型データを選択してくださいデータ項目選択日付型必須
    D. アクセスログの終了日が格納されている日付型データを選択してくださいデータ項目選択日付型必須
    E. ランキング件数をセットしてください (例 20)単一行記述必須
    F. Ranking フィルタをセットしてください (例 ga:pagePath=~/2016/|/2017/)単一行記述
    G. ランキング一覧が格納される文字列型データを選択してください (更新)データ項目選択文字列型(複数行)必須
    X. 通信ログが格納される文字列型データを選択してください (更新)データ項目選択文字列型(複数行)
    -設定変数名設定ラベル
    Aconf_OAuth2OAuth2通信許可設定名 (←[OAuth 2.0 設定])
    Bconf_ViewIdAnalytics ViewId をセットしてください
    Cconf_DataIdCアクセスログの開始日が格納されている日付型データを選択してください
    Dconf_DataIdDアクセスログの終了日が格納されている日付型データを選択してください
    Econf_NumOfRankingランキング件数をセットしてください (例 20)
    Fconf_RankingFilterRanking フィルタをセットしてください (例 ga:pagePath=~/2016/|/2017/)
    Gconf_DataIdGランキング一覧が格納される文字列型データを選択してください (更新)
    Xconf_DataIdX通信ログが格納される文字列型データを選択してください (更新)
    // Google Analytics reports via Analytics Reporting API v4 (ver. 20170803)
    // (c) 2017, Questetra, Inc. (the MIT License)
    
    //// == 工程コンフィグの参照 / 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 );
    }
    

    • B’: Bに入力された Google Analytics の ViewID
    • C’: Cで選択したデータ項目に格納されているアクセスログの開始日
    • D’: Dで選択したデータ項目に格納されているアクセスログの終了日
    • E’: Eに入力されたランキング件数
    • F’: Fに入力されたランキングフィルタ
    • 取得したランキング一覧が G で選択したデータ項目に格納されます
    • 通信ログが X で選択したデータ項目に格納されます
    • 事前に Google Developers Console にて「Google Analytics Reporting API」を有効にし、「クライアントID」と「クライアントシークレット」を取得します