GAS에서 Google 웹로그 분석 데이터 검색

경위


  • GA에서 매개 변수가있는 URL을 합산하여 집계하고 싶었습니다.
  • 제외 매개 변수는 구성 전 소급이 불가능하기 때문에 과거 데이터를 집계하기 위해 작성되었습니다.

  • v4 공식 문서 미묘하고 일본어 정보가 적었기 때문에 비망록으로 남겨 둡니다
  • 자신을 위해 Query Explorer 에서 부족하지만 사업부 멤버용으로 작성했다

  • 준비



    이런 식으로 설정 시트를 준비한다.


    스크립트 편집기를 시작하고 リソース > Google の拡張サービス를 엽니다.Analytics Reporting API v4 를 유효하게 한다.


    코드



    main.gs
    var setting = SpreadsheetApp.getActive().getSheetByName('設定');
    var viewId = setting.getRange(3, 3).getValue();
    var startDate = Utilities.formatDate(setting.getRange(4, 3).getValue(), 'Asia/Tokyo', 'yyyy-MM-dd');
    var endDate = Utilities.formatDate(setting.getRange(5, 3).getValue(), 'Asia/Tokyo', 'yyyy-MM-dd');
    var filter = setting.getRange(6, 3).getValue();
    
    function doGet() {
      getData(displayResults);
    }
    
    function getData(displayResults) {
      var data = AnalyticsReporting.Reports.batchGet({
        reportRequests: [{
          viewId: viewId,
          dateRanges: [{
            startDate: startDate,
            endDate: endDate
          }],
          metrics: [{
            expression: 'ga:pageviews',
          }],
          dimensions: [{name: 'ga:pagePath'}],
          filtersExpression: filter,
          orderBys: [{
            fieldName: 'ga:pagePath',
            sortOrder: 'ASCENDING'
          }],
          samplingLevel: 'LARGE',
    //      pageToken: '100000',
          pageSize: '100000'
        }]
      });
      displayResults(data);
    }
    
    function displayResults(response) {
      if(!response.code) {
        var json = JSON.parse(response);
        var data = json.reports[0].data;
        Logger.log(json);
    
        // シート追加
        var sheetName = Utilities.formatDate(new Date(), 'Asia/Tokyo', 'yyyyMMddHHmmss');
        var sheet = SpreadsheetApp.getActiveSpreadsheet().insertSheet(sheetName);
    
        // ヘッダ
        sheet.getRange(1, 1).setValue('ページ');
        sheet.getRange(1, 2).setValue('PV');
    
        // データ作成
        var dataset = [];
        var begin = 2;
        var r = begin;
        data.rows.forEach(function(row) {
          var url = row.dimensions[0].replace(/\?.*$/g, '');
          var value = row.metrics[0].values[0];
    
          // 2行目以降かどうか
          if(r>begin) {
            // 前の行と同じURLの場合は合算する
            var prevRow = dataset[dataset.length-1];
            var regUrl = url.replace(/\?.*$/g, '');
            var prevUrl = prevRow[0];
            if(prevUrl === regUrl) {
              r--;
              prevRow[1] = Number(prevRow[1]) + Number(value);
            } else {
              dataset.push([url, value]);
            }
          } else {
              dataset.push([url, value]);
          }
          r++;
        });
        // データ出力
        sheet.getRange(begin, 1, dataset.length, 2).setValues(dataset);
    
      } else {
        Logger.log('エラーが発生しました', response.message);
      }
    }
    

    스크립트 할당



    설정 시트의 버튼에 스크립트를 할당합니다.


    사양


  • 설정된 조건에 따라 페이지 당 PV를 집계
  • 매개 변수가있는 URL은 합산됩니다
  • 추출할 수 있는 최대 건수는 10만 건
  • 페이지의 오름차순으로 정렬하여 출력합니다
  • 실행 버튼을 눌러 데이터 추출 및 집계 시트 삽입을 수행합니다.

    기타



    Reporting API v4 에는 페이징 기능이 있어, 그것을 사용하면 10만건 이상도 취득 가능.
    이번에는 대상 데이터의 건수가 적기 때문에 구현하지 않았다.

    이상
  • 좋은 웹페이지 즐겨찾기