Google Analytics 사용자관리 자동화하기

최근 조직이 개편되면서 사내 GA 계정 관리 권한을 위임받게 되었다. 이전에는 Google Analytics 데이터를 보기 위해 개인의 메일을 사용하였지만, G-suits (구 Google Apps)를 도입하여 회사 이메일 계정도 변경되었는데, 뭔가 GA권한도 G-suits 디렉토리와 연동되지 않을까 했던 부질없는 기대는 정말 부질이 없었고, GA 권한만큼은 수동으로 추가해줘야 하는 듯 했다.

일단은 정체를 알 수 없는 다양한 이메일주소가 가득한 GA 유저들을 모두 제거했다. 당연히, 아이디를 보고 누군지 알아도 제거했다. gmail.com 계정을 사용하면 언젠가, 누군가, 나 이외의 다른 관리자는 누군지 모를테니까. 그리고 GA계정 신청하는 설문지를 만들고, 응답시트를 보고 매일 매일 추가해줬다. 한 1주정도 지나자, 요청은 상당히 줄어들었다. 역시 수작업이 짱이지!

...라고 생각했지만, 사람들의 인내심은 놀라울 정도로 다급했고, 설문을 제출하곤 5분도 채 되지 않아 승인을 독촉하는 메신저를 보냈다. 업무에 대해선 이슈트래커를 쓰니, 개인적으로 받는 연락이 죄다 권한요청에 대한 것만 남으니 어찌나 스트레스인지. 어차피 조직은 계속 성장하고 입사자, 퇴사자는 매주 발생하니 손이 안가는 방법을 찾아야 했다. 나는 지금도 충분히 게으르지만, 더 게으르고 싶으니까. 일은 최대한 안하고 싶다구.

일단 구글 개발자 페이지에서 Analytics API를 제공하고 있고, User 관리를 할 수 있다는 걸 찾았다. 일단 API가 있으니, API에 접근할 수 있는 방법을 찾아야하는데, 비개발자로서 서버세팅이나 웹프론트를 만들지 않고 가볍게 올릴 수 있는건 Google Script다. Google Apps Script는 구글에서 Javascript를 기반으로 지들만 쓰겠다고 만든거고 다양한 구글서비스들에 접근할 수 있는 치트키인데 (개발자를 포함해) 많은 사람들이 모른다.

일단, GA 권한을 자동화하는건 어렵지 않다. 5분이면 할 수 있다.(진짜로) 정작 본인은 1시간이 걸렸다고 한다. 삽질은 어쩔 수 없지.

1. 스프레드 시트 준비하기


일단 이메일을 수집할 수 있는 설문지를 연다. 그리고 응답을 받는 스프레드시트를 만들어서, 응답시트를 열어보자. 상단에 있는 메뉴표시줄에서 도구 > 스크립트 편집기(Script Editor)를 연다.

2. 스크립트 편집기 열기


스크립트 편집기를 연다. 일단 아무것도 안해도 된다. 리소스에서 고급 Google 서비스(Advanced Google Service)를 연다.

3. 스크립트 서비스 설정 & 구글 개발자 콘솔 API 설정


Analytics 서비스 옆에 있는 이상하게 생긴 버튼을 누른다. 비록 저렇게 생겼지만 ON/OFF 토글버튼이다. 일해라구글


팝업 아래에 적힌 것처럼 Google API 콘솔에서도 사용 설정이 되어야 한다. 기타 항목에 있는 Analytics API를 들어가서 사용설정을 누른다. 끝~

4. 그럼 이제 소스를 붙여넣어볼까.

4-1. 샘플코드 돌려보기
Google Analytics API에 대한 문서를 본다.
아래에 List account structure 에 대해 샘플코드가 있으니 일단 복사해서 (2)의 스크립트 편집기에 붙여넣는다. 그리고 일단 실행해본다.

그럼 계정에 묶인 애널리틱스 권한을 요청한다. 승인해주면 된다. 스크립트를 실행하고, 구글 개발자콘솔 권한을 얻어오는 사용자는 반드시 GA에서 사용자 관리 권한이 있어야 한다. 단순히 Viewer 권한만 있으면, 스크립트가 동작하지 않으니 참고하자.

4-2. 권한 테스트하기
구글애널리틱스API까지 접근할 정도면 개발자라고 생각했는지, Advanced Google Services의 Google Apps Script의 설명은 거의 없었다. 그래서 API 문서를 보고... API 브라우저를 돌려서 기대하는 결과값이 나오는 API가 뭔지 찾은다음... Response에서 내 계정에 붙은 권한이 어떤 값으로 되어 있는지 뒤지고... 그리고 다시 API 브라우저에서 찾은 Management API로 가서 Javascript 샘플을 보고, Google Apps Script 에 비슷하게 적용시켰다.


그리고 돌리자! 그리고 구글애널리틱스를 확인해보면 제대로 들어가있다. (성공!ㅋㅋ)

5. 설문지랑 연동해볼까?

애초에 설문지로 응답을 받고 있었기 때문에 스프레드 시트에서 값을 읽어와야한다. 애초에 응답시트에서 스크립트 편집기를 열었으니, 스프레드 시트에서 값을 받아오는 부분만 추가하면 된다.

굳이 주석을 설명하면,

  var ss = SpreadsheetApp.getActiveSpreadsheet(); // 스프레드시트에서 현재 활성화되어 있는 스프레드를 읽어온다.
  var sheet = ss.getSheets()[0]; //스프레드에서 1번의 시트탭을 읽어온다.
  var lastRow = sheet.getLastRow(); //마지막줄을 읽어온다.
  var requester = sheet.getRange(lastRow, 2); //최근 제출된 이메일을 읽어온다.

2라고 되어있는 건 조직 내 사용자로 응답자를 제한하고, 구글폼으로 응답을 받으면, B열에 이메일이 자동으로 기록되기 때문인데, 만약 이메일을 적는 컬럼이 다를경우 A열를 1로 기준하여 넣으면 된다.

그리고 돌리면 된다!

...는 역시 권한을 승인해줘야 돌아간다.

6. 자동화시키자.

구글 스크립트는 매번 실행해줘도 마지막 행을 불러오게 되어있고, 나는 매우 게으르므로 트리거를 걸어두자.

크론잡을 돌릴 시간과 조건은 다양하게 설정할 수 있다. 바로 추가되길 원하시는 분들을 위해 설문 제출 즉시 스크립트를 실행하게 했다. 그리고, 한번 더 실행해주면 내가 매번 스크립트를 실행하지 않아도, 자기가(?) 알아서 돈다. 만약 돌다가 실패하면 내가 수동으로 처리하거나, 업데이트 할 수 있도록 알림에서 이메일을 보내주도록 옵션을 추가했다.

Summary

Management API는 유저의 권한을 읽고/추가하고/삭제하고/업데이트할 수 있다. GA계정/속성/보기에 대해 각각 권한관리를 할 수 있다. 위의 샘플코드에서는 Permission을 모두 줬지만 나는 읽고 분석하기공동작업만 기본권한으로 주었다. 만약 설문 시트에서 모든 사용자 권한을 관리하겠다고 생각한다면, 유저별로 권한을 체크해서 해당 권한만 부여하고, 시트 변경 내역을 추적해서 이메일이 삭제될때 GA에서도 삭제하는 등의 처리가 필요하다. 그리고, 해당 뷰에만 권한을 적용할지, 상위 계층의 권한을 상속받아올지도 지정가능하다.

당연한 말이지만 이 상태로는 유저관리를 자동화했다고 볼 수 없다. GA계정 전체에 대해 유저추가를 자동화했을 뿐이지. 요약은 이상하지만? 어쨌든 당분간 내가 일을 하지 않아도 되는 일을 했다. 위에서 적은 것처럼, 이건 사용자 관리라고 부르기엔 너무 해야할 일이 많으니까, 개발자님께 회사 어드민에 메뉴로 만들어달라고 해야지.. 개발 넘나 귀찮은 것..

적게 일하고 많이 버는 법을 늘 고민합니다. 일이 되게 하는 것에 간혹 목숨을 겁니다. 지금은 우아한형제들과 함께 일하고 있어요.