質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Google Analytics

Google AnalyticsはGoogleが開発した無料のウェブ分析のソリューションです。複数のクライアント側のAPIとデータをエクスポートし管理するREST APIも格納されています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

0回答

174閲覧

ユーザエクスプローラの起点表示

naonao11

総合スコア97

Google Analytics

Google AnalyticsはGoogleが開発した無料のウェブ分析のソリューションです。複数のクライアント側のAPIとデータをエクスポートし管理するREST APIも格納されています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

1クリップ

投稿2018/08/16 02:50

現状

ユーザエクスプローラ
ユーザエクスプローラにおいて,session(旗が立ったところ)においての情報を取ってきている.
実際に取りたいのは以下になります.
イメージ説明

コードについて

main.py

python

1import GoogleAnalyticsAPI4v 2import datetime 3 4view_id = GoogleAnalyticsAPI4v.VIEW_ID 5date = datetime.date.today() - datetime.timedelta(1) 6dateWeth = datetime.date.today().weekday(); 7if dateWeth == 0: 8 dateFri = datetime.date.today() - datetime.timedelta(3) 9 dateSun = datetime.date.today() - datetime.timedelta(1) 10 dateStrSt = dateFri.strftime('%Y-%m-%d') 11 dateStrEn = dateSun.strftime('%Y-%m-%d') 12else: 13 dateStrSt = date.strftime('%Y-%m-%d') 14 dateStrEn = date.strftime('%Y-%m-%d') 15 16 17dateFormat = date.strftime('%y%m%d') 18dateRanges = [{"startDate": dateStrSt, "endDate": dateStrEn}] 19# dateRanges = [{"startDate": '2018-08-10', "endDate": '2018-08-10'}] 20 21dimensions = [{"name": "ga:dateHourMinute"}, 22 {"name": "ga:dayOfWeekName"}, 23 {"name": "ga:browser"}, 24 {"name": "ga:deviceCategory"}, 25 {"name": "ga:sourceMedium"}, 26 {"name": "ga:campaign"}, 27 {"name": "ga:city"}, 28 {"name": "ga:adMatchedQuery"}] 29 30dimensionFilterClauses = [{"operator": "OR", 31 "filters":[{"dimensionName": "ga:pagePath", 32 "not": "false", 33 "operator": "REGEXP", 34 "expressions": ["/o-event-complete/"], 35 "caseSensitive": "false"}, 36 {"dimensionName": "ga:pagePath", 37 "not": "false", 38 "operator": "REGEXP", 39 "expressions": ["/event-complete/"], 40 "caseSensitive": "false"}] 41 }] 42metrics = [{"expression": "ga:pageviews", "formattingType": "INTEGER"}] 43pageSize = 10000 44 45body = {"reportRequests": []} 46body["reportRequests"].append({"viewId": view_id, 47 "dateRanges": dateRanges, 48 "dimensions": dimensions, 49 "dimensionFilterClauses": dimensionFilterClauses, 50 "metrics": metrics, 51 "pageSize": pageSize 52 }) 53 54csvAnalytics = "analyEve"+dateFormat+".csv" 55pattern = "event" 56 57def main(): 58 analytics = GoogleAnalyticsAPI4v.initialize_analyticsreporting() 59 response = GoogleAnalyticsAPI4v.get_report(analytics,body) 60 GoogleAnalyticsAPI4v.print_response(response,9) 61 62if __name__ == '__main__': 63 main()

処理については以下になります.

python

1from apiclient.discovery import build 2from oauth2client.service_account import ServiceAccountCredentials 3 4import httplib2 5from oauth2client import client 6from oauth2client import file 7from oauth2client import tools 8 9SCOPES = ['https://www.googleapis.com/auth/analytics.readonly'] 10DISCOVERY_URI = ('https://analyticsreporting.googleapis.com/$discovery/rest') 11KEY_FILE_LOCATION = r'path' 12SERVICE_ACCOUNT_EMAIL = 'mail' 13VIEW_ID = 'ID' 14 15 16def initialize_analyticsreporting(): 17 credentials = ServiceAccountCredentials.from_json_keyfile_name(KEY_FILE_LOCATION, SCOPES) 18 analytics = build('analyticsreporting', 'v4', credentials=credentials) 19 return analytics 20 21 22def get_report(analytics,body): 23 return analytics.reports().batchGet(body=body).execute() 24 25 26def print_response(response,span): 27 length = 0 28 j = -1 29 for report in response.get('reports', []): 30 for row in report.get('data', {}).get('rows', []): 31 length = length + 1 32 list = [[0 for a in range(span)] for b in range(length)] 33 34 for report in response.get('reports', []): 35 columnHeader = report.get('columnHeader', {}) 36 dimensionHeaders = columnHeader.get('dimensions', []) 37 metricHeaders = columnHeader.get('metricHeader', {}).get('metricHeaderEntries', []) 38 39 for row in report.get('data', {}).get('rows', []): 40 j = j + 1 41 k = 0 42 dimensions = row.get('dimensions', []) 43 dateRangeValues = row.get('metrics', []) 44 45 for header, dimension in zip(dimensionHeaders, dimensions): 46 print (header + ':' + dimension) 47 if k == 0: 48 list[j][k] = dimension[0:8] 49 k = k + 1 50 list[j][k] = dimension[8:10] + ':' + dimension[10:12] 51 else: 52 k = k + 1 53 list[j][k] = dimension 54 55 for i, values in enumerate(dateRangeValues): 56 for metricHeader, value in zip(metricHeaders, values.get('values')): 57 print (metricHeader.get('name') + ': ' + value) 58 return list

ご助力のほどよろしくお願いします…

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問