Excel에서 Google 웹로그 분석 사용

소개



Google Analytics Advent Calender 15일째 기사입니다.

이 기사는 다음과 같은 분들에게 바칩니다.
  • 웹 이외의 데이터를 Google 애널리틱스처럼 측정하고 싶습니다
  • 웹 데이터와 웹 이외의 데이터를 연결하고 싶습니다
  • Excel에서 Google 웹 로그 분석을 사용하고 싶습니다
  • Google Analytics × IoT에서 뭔가 해보고 싶습니다

  • Measurement Protocol에 대해서는, 7일째라든지 14일째 에서도 소개되고 있으므로, 꼭 읽어 보세요. 오히려, 이 기사보다 도움이 되는 것을 여러분 쓰고 있으므로, 그쪽을 읽는 편이 유익합니다(웃음)

    개요



    Excel 매크로 인 VBA를 사용하여 GA에 액세스 데이터를 건너 뛰고 싶습니다.

    Measurement Protocol이란?



    Measurement Protocol은 한마디로 Google Analytics(이하 GA)의 측정 방법입니다. Measurement Protocol 자체가, Web 이외의 물건을 계측하는 방법・・・이라고 하는 것은 아니고, 원래의 Web의 GA도 Measurement Protocol을 사용하고 있습니다.

    그 Web도 사용하고 있는 GA의 계측 방법을, 너희들 좋아하게 사용해도 좋다! 라는 것이 Measurement Protocol인 것입니다.

    Measurement Protocol의 사양에 따라 다양한 데이터를 측정할 수 있으므로 온라인 오프라인에 관계없이 GA에 데이터를 날릴 수 있습니다.

    메커니즘



    공식 참조는 여기

    다른 Qiita 기사에서도 언급되었지만 Measurement Protocol은 HTTP를 통한 비콘 액세스입니다. 즉, GA는 비콘 이미지(1x1의 투명한 GIF 이미지)를 읽어 측정 데이터를 건너뛰고 있습니다. 그 비콘 이미지의 URL에 다양한 파라미터를 건네주는 것으로, 브라우저나 디바이스등의 정보도 계측할 수 있게 되어 있습니다.

    보다 구체적으로 말하면 다음 URL을 읽으면 측정됩니다.

    HTTP 버전
    http://www.google-analytics.com/collect
    

    HTTPS 버전
    https://ssl.google-analytics.com/collect
    

    이번에는이 URL을 이용하여 Excel에서 GA 측정을 실현해 보겠습니다.

    사용 예



    이번에는 다음과 같은 코드를 사용하여 검증했습니다.
    Excel 파일 안에 버튼을 넣어 두고, 그것을 누르면 아래의 처리가 불려 데이터가 날아가는 구조로 되어 있다는 이미지입니다.

    예를 들어 업무 등으로 Excel 파일을 포맷으로,
    설문조사나 신청서를 사내에서 사용할 수 있다고 생각합니다.
    로 만든 경우에, 풀다운으로 선택한 항목을 페이지(이벤트에서도 좋다)로서 날리거나, 입력한 항목을 집계하기 위해서 날리거나 하고, 사내의 정보를 집약하는 것도 하나의 수단일까 생각합니다 . (단지 그 경우, 집계를 취하는 모든 파일에 매크로를 넣는 것은 되어 버립니다만・・・)

    Excel에서 측정 테스트 코드
    
    '=============================================================
    ' postGA  GAへデータの送信を行なう
    ' 
    ' パラメーター
    ' cliendId : クライアントの識別(ブラウザで言うCookie ID)
    ' pagePath : どの階層のページか
    ' uid : ユーザーID(ユーザーコントロールで使用する)
    ' reffer : どこからきたのか。リファラー。(任意)
    '=============================================================
    Public Function postGA(ByVal cliendId As String, ByVal pagePath As String, ByVal uid As String, Optional ByVal reffer As String = "")
    
        Dim result As String
    
        '-----------------
        'リクエスト生成
        '-----------------
        'URL(必要に応じて変更)
        Dim url As String
        url = "http://www.google-analytics.com/collect"
    
        If reffer <> "" Then
            reffer = "&dr=" & UrlEncodeUtf8(reffer)
        End If
    
        'パラメータ(必要に応じて動的に生成)
        Dim paramStr As Variant
        'UA番号はご自身のものに変更してください
        paramStr = "&v=1&tid=UA-XXXXXXXX-Y" & reffer & "&cid=" & cliendId & "&uid=" & uid & "&t=pageview&dp=%2F" & pagePath
    
    
        '--------------
        'POST実行
        '--------------
        Dim xmlhttp As MSXML2.xmlhttp
        Set xmlhttp = New MSXML2.xmlhttp
    
        '方式をPOSTに設定
        Call xmlhttp.Open("POST", url, False)   
        Call xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded")
        'パラメータセットし、URLを叩く
        Call xmlhttp.send(paramStr)  
    
        '--------------
        '応答取得
        '--------------
        Dim retCd As String
        'ステータスコード取得
        retCd = xmlhttp.Status  
    
        If retCd <> 200 Then
              result = "error:" & retCd
        Else
            '200番なら、結果HTML取得
            result = StrConv(xmlhttp.responsebody, vbUnicode, 1041)      
        End If
    
        '結果を返す
        postGA = result
    
    End Function
    
    
    
    Public Function UrlEncodeUtf8(ByVal strSource As String) As String
        Dim objSC As Object
        Set objSC = CreateObject("ScriptControl")
        objSC.Language = "Jscript"
        UrlEncodeUtf8 = objSC.CodeObject.encodeURIComponent(strSource)
        Set objSC = Nothing
    End Function
    

    실제 화면



    Excel에서 사용하면 이런 느낌이 듭니다.
    (이미지 클릭으로 Youtube로 날아갑니다)

    GAの画面

    마지막으로



    이번에는 Excel에서도 Measurement Protocol을 사용할 수 있습니다! 라는 것을 소개하는 것이 주가 된 기사이므로, 실제의 업무에서는 너무 「Excel 매크로로 GA 계측!」라는 것은 없을지도 모릅니다. HTTP 액세스만 제대로 할 수 있으면, GA의 Measurement Protocol은 어디에서라도 액세스 할 수 있으므로 꼭 사용해 보세요.

    여담



    어느 쪽인가 하면, 요즘 눈부신 IoT 디바이스등에 짜넣어, 센서치를 GA에 날리는 등의 쪽이 재미있을지도 모릅니다.

    좋은 웹페이지 즐겨찾기