SpreadSheet 및 GAS를 사용하여 Google Analytics 보고서를 채팅에 일일 전송

개요



GAS의 입문으로,
'Google Analytics 데이터를 GoogleDrive의 SpreadSheet에 저장하고 보고서를 일일 채팅 보내기'
자동화하고 싶습니다.
그렇게 말하면, Analytics도 필요한 때밖에 보고 있지 않고, 설정도 Default이므로 다시 공부도 담아.

전제 등:
・현재 홈페이지를 운용하고 있어, 서브 도메인 잘라 기능별로 운용하고 있다.
Qiita, 하테나 블로그도 같은 트래킹 ID 설정하고 있어, 정리해 집계하고 싶습니다.
・리포트 내용은, 전날의 PV나 세션등의 정보와 기사별의 Top10



Google 애널리틱스 측의 사전 설정


  • 관리 탭에서 설정
  • 필터
  • 디폴트라고/이하의 로그 밖에 남지 않기 때문에 도메인도 추가 (순서 할애)
  • not set 제외 (많이 없으면 불필요. 검색 엔진으로부터의 액세스)
  • 사내 집 IP 제외 (고정 IP 인 경우)
  • 개발 환경 제외(dev.xxx.jp)

  • 뷰 설정
  • 기본 페이지에 index.html 추가 (/와/index.html을 동일한 로그로 만듭니다)



  • Google SpreadSheet에 데이터를 자동 저장(일별 1:00~2:00)



    Google Drive에 Google Apps Script 추가


  • '신규'-> '앱 추가'에서 검색하여 추가

  • Google 애널리틱스 애드온 추가


  • SpreadSheet를 신규 작성해, 「애드온」에서 검색해 추가

  • 설정


  • 「Create a new report」하고 아래와 같이 설정합니다.


  • 하기를 참고로 했습니다.
    htp : //이 되어-t. 코 m / 오오 g ぇ - 아나 ly 치 cs - sp re d d ぇ t /

    확인 및 자동화



    Add-on에서 Run Report하여 OK이면 Schedule Report로 자동화합니다.

    저장된 데이터를 집계하여 채팅으로 전송(일차 2:00~3:00)



    스크립트 (GAS) 설치



    SpreadSheet에서 스크립트 편집기를 열고 "자원"에서 라이브러리 추가
    (공식이 아니고, 개인 작성의 라이브러리이므로 확인·이해한 후에 이용해 주세요)
  • Chatwork Client
    M6TcEyniCs1xb3sdXFF_FhI-MNonZQ_sT Ver.16
    htps : // 기주 b. 코 m / cw - 시부야 / cw - ゔ ぇ t - chifu r
  • Slack Client
    M3W5Ut3Q39AaIwLquryEPMwV62A3znfOO Ver.22
    htps : // 기주 b. 코 m / 그렇게 dT 리크 r / S ぁ c

  • 보고서 스크립트


    function SendReport() {
    
      var mySS=SpreadsheetApp.getActiveSpreadsheet();
      var sheetDaily=mySS.getSheetByName("Daily"); //Dailyレポートシートを取得
      var rowDaily=sheetDaily.getDataRange().getLastRow(); //最終行を取得
    
      var yDate = sheetDaily.getRange(rowDaily,1).getValue();
    
      /* レポート① :前日のPVとか */
      var strBody = "[info][title]ishino.info " +
          Utilities.formatDate(yDate, 'JST', 'yyyy/MM/dd') + "[/title]" +  //ga:date
          "PV: " + sheetDaily.getRange(rowDaily,2).getValue() + "\n" + //ga:pageviews
          "User: " + sheetDaily.getRange(rowDaily,3).getValue() + "   /   " + //ga:users
          "Session: " + sheetDaily.getRange(rowDaily,4).getValue() + "\n" + //ga:sessions
          "直帰率: " + Number(sheetDaily.getRange(rowDaily,5).getValue()*100).toFixed(1) + "%   /   " + //ga:bounceRate
          "Session平均: " + Number(sheetDaily.getRange(rowDaily,6).getValue()).toFixed(1) + "秒[hr]" ; //ga:avgSessionDuration
    
      /* レポート② :前日の記事別Top10 */
      var sheetPost=mySS.getSheetByName("記事別"); //記事別レポートシートを取得
    
      for(var i=1;i<=10;i++){
        strBody = strBody + sheetPost.getRange(i+15,3).getValue() + " pv :  " + sheetPost.getRange(i+15,2).getValue() + "\n";
      }
    
      strBody = strBody + "[hr]" + mySS.getUrl() + "[/info]"; //スプレッドシートのURLを取得
    
      SendCW( strBody )
      //SendSlack( strBody )
    }
    
    function SendCW( strBody ) {
      var cwClient = ChatWorkClient.factory({token: 'xxx'}); //チャットワークAPI
      cwClient.sendMessage({
        room_id: xxx, //ルームID
        body: strBody
      });
    }
    
    function SendSlack( strBody ) {
      var token = 'xoxb-xxx';
      var slackApp = SlackApp.create(token); //SlackApp インスタンスの取得
      var options = {
        channelId: "#bot_test", //チャンネル名
        userName: "mohi", //投稿するbotの名前
        message: strBody //投稿するメッセージ
      };
      slackApp.postMessage(options.channelId, options.message, {username: options.userName});
    }
    
    

    확인 및 자동화


  • SendReport 함수를 실행하고 OK이면 시계 마크에서 자동화 설정하여 완료
  • 좋은 웹페이지 즐겨찾기