본문 바로가기
코딩/Python

파이썬으로 구글 API 활용하기 예제/애드센스(Adsense) 보고서 데이터 불러오기

by 나홀로코더 2022. 1. 1.
반응형

목차

1. 주제 소개

2. 구글 클라우드 플랫폼에서 사용자 인증 준비하기

3. 파이썬으로 API 요청 보내기(구글 공식 예제 파일 활용)


 

1. 주제 소개

 

앞서 오픈 API 활용 예제로서 공공데이터포털에서 제공하는 오픈 API의 활용 예제를 소개했었다.

 

파이썬으로 공공데이터포털(data.go.kr) 오픈 API 활용하기 예제/국세청 사업자등록 상태 조회

 

오픈 API는 공공데이터포털뿐만 아니라 구글, 카카오, 네이버 등 IT 기업들에서도 제공하고 있는데, 구글의 API 서비스는 "구글 클라우드 플랫폼"을 통해 제공되고 있다.

 

구글 검색창에 "google API console"을 검색하거나, 아래 링크로 접속해보자. 그러면 "구글 클라우드 플랫폼" 내의 "API 및 서비스" 페이지로 접속이 된다.

 

https://console.cloud.google.com/apis/

 

이 게시글에서는 구글이 제공하는 API 가운데 "AdSense Management API"를 이용해 본인의 애드센스 계정에서 수익 데이터를 불러오는 방법을 소개한다.

 

반응형

 

2. 구글 클라우드 플랫폼에서 사용자 인증 준비하기

 

구글 API를 사용하려면 대강 아래 순서를 거쳐야 한다.

 

(1) 구글 클라우드 플랫폼에서 프로젝트 생성

(2) 원하는 API 서비스를 찾아 "사용" 설정

(3) 사용자 인증 정보 만들기

(4) 구글에서 제공하는 클라이언트 라이브러리 설치하기(pip)

(5) 사용자 인증을 거치고 API 사용하기

 

그중 (1)~(3)은 구글 클라우드 플랫폼 웹페이지에서, (4)~(5)는 각자의 PC에서 사용 중인 개발환경(예를 들면 VS Code)에서 이루어진다.

 

먼저 (1)~(3)에 대해 소개한다.

 

(1) 구글 클라우드 플랫폼에서 프로젝트 생성

 

구글 클라우드 플랫폼에서 원하는 기능을 사용하려면 먼저 "프로젝트"라는 것을 만들어야 한다. 

 

API Console 페이지 상단에서 아래 표시된 부분을 클릭하고, 새로 뜨는 창의 우상단에 있는 "새 프로젝트"를 클릭한다.(필자는 이미 프로젝트를 만든 상태여서 "My Project 1092"라는 이름이 표시되고 있다.)

 

 

 

프로젝트 이름을 원하는 대로 입력하고 "만들기"를 클릭하면 프로젝트 생성이 완료된다.

 

(2) 원하는 API 서비스를 찾아 "사용" 설정

 

다음으로는 본인이 사용하고 싶은 API를 찾아 "사용" 설정을 해 주어야 한다.

 

API 콘솔의 좌측을 보면 몇 가지 메뉴가 있는데, 여기에서 "라이브러리"를 선택하면 필요한 API를 탐색할 수가 있다.

 

 

게시글 작성 시점 기준으로 350개가 넘는 API가 제공되고 있는데, 우리는 애드센스를 사용해볼 것이니 검색창에 adsense를 입력해보자.

 

 

검색 결과 2개 중에 위에 표시되는 "AdSense Management API"를 선택한다.

 

 

그러면 해당 API에 대한 여러 설명과 함께 파란색 "사용" 버튼이 나타난다.

 

궁금하다면 API에 대한 설명들을 읽어보고, "사용" 버튼을 눌러준다.

 

(3) 사용자 인증 정보 만들기

 

API 사용 설정을 했다고 해서 바로 사용이 가능한 것은 아니고, 우리가 만들 앱에서 API를 이용해 정보에 접근할 때 사용할 사용자 인증 정보를 만들어줘야 한다.

 

사용자 인증 정보를 만들기 전에, 사용자 인증 과정에서 사용될 OAuth 동의 화면을 먼저 만들어 준다.

 

아까 선택했던 "라이브러리" 밑에 있는 "OAuth 동의 화면"을 선택하고, "앱 이름" 등 * 표시가 붙어 있는 필수 정보들을 입력해준다.

 

 

테스트만 해볼 것이기 때문에 앱 이름이나 이메일 등은 아무렇게 나 넣어도 무방하며, 다만 "테스트 사용자" 입력 단계에서 "ADD USERS"를 선택본인의 이메일 주소를 넣어줘야 인증이 진행되는 것 같으니, 빠뜨리지 말고 넣어준다.

 

 

이제 사용자 인증 정보를 만들 차례이다. "사용자 인증 정보" 페이지를 들어가 보면 상단에 "사용자 인증 정보 만들기"가 보이고, 그 밑으로 API 키, OAuth 2.0 클라이언트 ID, 서비스 계정이 보일 것이다.

 

 

각 사용자 인증 방법별로 용도가 조금씩 다른데, 예제에서 사용해 보려는 API는 민감한 정보에 접근할 수 있는 것이기 때문에 OAuth가 사용된다.

 

"사용자 인증 정보 만들기"를 누르고, OAuth 클라이언트 ID를 선택한다.

 

 

그러면 애플리케이션 유형을 선택하라고 하는데, 본인이 만들려는 앱에 따라 다르겠지만 예제만 따라 해 볼 거라면 "데스크톱 앱"을 선택해주면 된다. 그러면 별다른 추가 정보 입력 없이 바로 "만들기"를 클릭할 수 있다.

 

 

여기에서 만든 클라이언트 ID 정보는 API 호출 시 사용해야 하므로 "사용자 인증 정보" 페이지에서 다운로드 아이콘을 눌러 .json 파일로 다운로드하여 둔다.

 

이때, 파일 이름이 복잡하게 되어 있을 텐데, "client_secrets.json"으로 저장해준다.

 

 

여기까지 하면 API 콘솔에서 할 작업은 모두 완료됐다.

 

반응형

 

3. 파이썬으로 API 요청 보내기(구글 공식 예제 파일 활용)

 

이제 파이썬으로 API 요청을 보내 보자. 

 

참고로, 여기에 소개하는 내용은 아래 링크들을 통해 모두 확인할 수 있다. 자기 입맛에 맞게 바꿔보는 것은 각자의 노력에 맡기고, 구글에서 공식적으로 제공하는 예제를 실행해보는 데까지만 소개한다.

 

AdSense Management API 페이지

https://developers.google.com/adsense/management/?hl=ko 

 

Google API Python Client의 Github 페이지

https://github.com/googleapis/google-api-python-client#installation

 

AdSense Management API의 예제 소스 Github 페이지

https://github.com/googleads/googleads-adsense-examples/tree/master/v2/python#adsense-management-api-v2-samples

 

(1) 구글에서 제공하는 클라이언트 라이브러리 설치하기(pip)

 

구글에서는 API 호출에 사용할 수 있는 클라이언트 라이브러리를 별도로 만들어 제공하고 있다.

 

 

이 라이브러리를 사용하지 않고 직접 호출하는 방법도 있으나, 클라이언트 라이브러리 사용을 권장한다고 한다.

 

클라이언트 라이브러리 설치 방법은 클라이언트 라이브러리 Github 페이지에 설명되어 있다.

 

Mac/Linux를 기준으로, 아래 커맨드를 순서대로 커맨드라인에 입력하면 되는데, <your-env> 부분에는 본인이 사용할 가상환경의 이름을 원하는 대로 입력하면 된다.(윈도우 사용자의 경우에는 위의 깃허브 페이지에서 소개하는 윈도우용 커맨드를 입력)

 

pip install virtualenv
virtualenv <your-env>
source <your-env>/bin/activate
<your-env>/bin/pip install google-api-python-client

 

그리고 아래 커맨드를 추가로 실행해 OAuth 관련 라이브러리를 설치한다.

 

<your-env>/bin/pip install google_auth_oauthlib

 

(2) 사용자 인증을 거치고 API 사용하기

 

이제 클라이언트 라이브러리 설치까지 마쳤으니 아래 커맨드로 우리가 사용할 예제 소스를 다운로드한다.

 

git clone https://github.com/googleads/googleads-adsense-examples

 

다운받은 폴더를 열어 보면 /v2/python 폴더 안에 여러 파일이 있을 것이다.

 

그중에 "client_secrets.json" 파일이 있을 텐데, 예제 파일을 실행하기 전에 이 파일을 위에서 다운받아 둔 .json 파일로 대체해준다.해 준다. 원래 있던 파일과 반드시 이름은 같게 해준다.

 

그런 다음에 아래와 같이 예제 파일을 실행해보자. 먼저 애드센스 예제 Github 페이지에서 소개하는 것처럼 애드센스 계정 정보를 불러오는 예제를 실행해본다. 커맨드 라인에 아래 명령어를 입력한다.

 

python get_all_accounts.py

 

API 호출을 처음 시도할 때에는 사용자 인증을 거치게 된다.

 

위 커맨드를 입력하면 URL 주소가 하나 표시되면서 code를 입력하라고 하는데, 그 URL 주소를 인터넷 브라우저의 주소창에 입력하면 인증 절차가 진행되고, 인증 절차가 끝나면 표시되는 코드를 복사해 code를 입력하라는 곳에 붙여 넣으면 인증이 완료되면서 API가 호출된다.

 

호출 결과는 아래와 같은 형태일 것이다. ID에는 본인의 애드센스 ID가, My account에는 본인의 이름이 표시된다.

 

Account with ID "pub-1234567890123456" and name "My account" was found.

 

위와 같이 API를 한 차례 호출하고 나서 예제 소스가 저장된 폴더에 들어가 보면 "adsense.dat"이라는 파일이 하나 생성되어 있을 것이며, 앞으로는 조금 전에 거친 사용자 인증 절차를 매번 거치지 않고도 API를 호출할 수가 있다.

 

계정 정보만 불러오는 것은 조금 싱거우니 다른 예제도 한번 실행해 보자.

 

geterate_report.py 파일은 애드센스 수익 보고서를 불러오는 API를 실행하는 예제 파일이다.

 

해당 파일을 열어 보면 중간 쯤에 아래와 같은 if문이 있다.

 

      if saved_report_id:
        result = service.accounts().reports().saved().generate(
            name=saved_report_id, dateRange='LAST_7_DAYS').execute()
      else:
        result = service.accounts().reports().generate(
            account=account_id, dateRange='CUSTOM',
            startDate_year=2021, startDate_month=3, startDate_day=1,  # 수정할 부분
            endDate_year=2021, endDate_month=3, endDate_day=31,  # 수정할 부분
            metrics=['PAGE_VIEWS', 'AD_REQUESTS', 'AD_REQUESTS_COVERAGE',
                    'CLICKS', 'AD_REQUESTS_CTR', 'COST_PER_CLICK',
                    'AD_REQUESTS_RPM', 'ESTIMATED_EARNINGS'],
            dimensions=['MONTH', 'PLATFORM_TYPE_NAME'],
            orderBy=['+MONTH']).execute()​

 

위 코드에서 주석을 달아 놓은 부분에 수익보고서 조회의 시점과 종점을 입력하고 파일을 저장한 다음 실행해보자.

 

그러면 Tablets, High-end mobile devices, Desktop 등 매체별로 페이지뷰, CPC, 수익 따위의 수치가 출력된다.

 

결과 출력에 관련된 코드는 아래 부분이니 필요한 형태로 수정하면 좀 더 보기 좋은 형태로 결과가 출력될 것이다.

 

      # Display headers.
      for header in result['headers']:
        print('%25s' % header['name'], end=''),
      print()

      # Display results.
      if 'rows' in result:
        for row in result['rows']:
          for cell in row['cells']:
            print('%25s' % cell['value'], end='')
      print()

 

필자는 termux를 이용해 위 api를 호출하여, 수익이 발생할 때마다 알림을 보내주는 스크립트를 작성할 계획이다.

 

그에 관해서는 따로 포스팅을 하기로 하고, termux에 관한 게시글은 아래 링크를 참조하기 바란다.

 

 

termux를 이용해 스마트폰에서 파이썬 코딩하고 주피터노트북 사용하기

파이썬과 termux를 이용해 스마트폰 컨트롤하기(문자 전송, 전화 걸기, 녹음하기, 알림 보내기 등)/termux-api

반응형

댓글