نحوه دسترسی به Google Analytics API از طریق پایتون
Google Analytics API دسترسی به داده های گزارش Google Analytics (GA) مانند بازدید از صفحه، جلسات، منبع ترافیک و نرخ پرش را فراهم می کند.
اسناد رسمی Google توضیح می دهد که می توان از آن برای موارد زیر استفاده کرد:
- داشبوردهای سفارشی برای نمایش داده های GA بسازید.
- وظایف گزارش گیری پیچیده را خودکار کنید.
- ادغام با سایر برنامه ها
شما می توانید با استفاده از چندین روش مختلف از جمله جاوا، PHP و جاوا اسکریپت به پاسخ API دسترسی پیدا کنید، اما این مقاله به طور خاص بر روی دسترسی و صادرات داده ها با استفاده از پایتون تمرکز دارد.
این مقاله فقط برخی از روشهایی را که میتوان برای دسترسی به زیرمجموعههای مختلف دادهها با استفاده از معیارها و ابعاد مختلف استفاده کرد، پوشش میدهد.
من امیدوارم که یک راهنمای بعدی بنویسم که راه های مختلفی را برای تجزیه و تحلیل، تجسم و ترکیب داده ها بررسی کند.
راه اندازی API
ایجاد یک حساب سرویس Google
اولین قدم این است که یک پروژه ایجاد کنید یا آن را در حساب Google Service خود انتخاب کنید.
هنگامی که این مورد ایجاد شد، مرحله بعدی انتخاب آن است + ایجاد حساب خدمات دکمه.
سپس برای اضافه کردن برخی از جزئیات مانند نام، شناسه و توضیحات ارتقا پیدا خواهید کرد.
پس از ایجاد حساب سرویس، به آن بروید کلیدها بخش و یک کلید جدید اضافه کنید.
این از شما می خواهد که یک کلید خصوصی ایجاد و دانلود کنید. در این مثال، JSON را انتخاب کنید و سپس ایجاد کنید و منتظر بمانید تا فایل دانلود شود.
به حساب Google Analytics اضافه کنید
همچنین میخواهید یک کپی از ایمیلی که برای حساب سرویس ایجاد شده است بگیرید – این را میتوانید در صفحه اصلی حساب پیدا کنید.
گام بعدی اضافه کردن آن ایمیل به عنوان کاربر در Google Analytics با مجوزهای تحلیلگر است.
فعال کردن API
آخرین و مسلماً مهمترین مرحله، اطمینان از فعال کردن دسترسی به API است. برای انجام این کار، مطمئن شوید که در پروژه صحیح هستید و برای فعال کردن دسترسی، این پیوند را دنبال کنید.
سپس، مراحل را دنبال کنید تا در هنگام ارتقا، آن را فعال کنید.
این برای دسترسی به API مورد نیاز است. اگر این مرحله را از دست دادید، در اولین اجرای اسکریپت از شما خواسته می شود آن را کامل کنید.
دسترسی به API گوگل آنالیتیکس با پایتون
اکنون همه چیز در حساب سرویس ما تنظیم شده است، می توانیم شروع به نوشتن اسکریپت برای صادرات داده ها کنیم.
من Jupyter Notebooks را برای ایجاد آن انتخاب کردم، اما میتوانید از سایر محیطهای توسعهدهنده یکپارچه (IDE) از جمله PyCharm یا VSCode نیز استفاده کنید.
نصب کتابخانه ها
اولین قدم نصب کتابخانه هایی است که برای اجرای بقیه کدها مورد نیاز است.
برخی برای API تجزیه و تحلیل منحصر به فرد هستند و برخی دیگر برای بخش های بعدی کد مفید هستند.
!pip install --upgrade google-api-python-client !pip3 install --upgrade oauth2client from apiclient.discovery import build from oauth2client.service_account import ServiceAccountCredentials !pip install connect !pip install functions import connect
توجه: هنگام استفاده از پیپ در نوت بوک Jupyter، ! – اگر در خط فرمان یا IDE دیگری اجرا شود، ! مورد نیاز نیست
ایجاد یک سرویس ساخت
گام بعدی این است که محدوده خود را تنظیم کنیم، که پیوند احراز هویت API آنالیتیک فقط خواندنی است.
به دنبال آن دانلود JSON محرمانه مشتری که هنگام ایجاد کلید خصوصی ایجاد شده است، انجام می شود. این به روشی مشابه کلید API استفاده می شود.
برای دسترسی آسان به این فایل در کد خود، مطمئن شوید که فایل JSON را در همان پوشه فایل کد ذخیره کرده اید. سپس به راحتی می توان با تابع KEY_FILE_LOCATION فراخوانی کرد.
در نهایت، شناسه view را از حساب تجزیه و تحلیلی که میخواهید با آن به دادهها دسترسی داشته باشید، اضافه کنید.
در مجموع این به شکل زیر خواهد بود. ما به این توابع در سراسر کد خود ارجاع خواهیم داد.
SCOPES = ['https://www.googleapis.com/auth/analytics.readonly'] KEY_FILE_LOCATION = 'client_secrets.json' VIEW_ID = 'XXXXX'
هنگامی که فایل کلید خصوصی خود را اضافه کردیم، می توانیم با فراخوانی فایل و تنظیم آن از طریق مرحله ServiceAccountCredentials، آن را به تابع اعتبارنامه اضافه کنیم.
سپس، گزارش ساخت را تنظیم کنید، با فراخوانی API گزارش تحلیلی V4، و اعتبارنامههای تعریف شده ما از بالا.
credentials = ServiceAccountCredentials.from_json_keyfile_name(KEY_FILE_LOCATION, SCOPES) service = build('analyticsreporting', 'v4', credentials=credentials)
نوشتن بدن درخواست
وقتی همه چیز را تنظیم و تعریف کردیم، لذت واقعی شروع می شود.
از ساخت سرویس API، امکان انتخاب عناصر از پاسخی که می خواهیم به آنها دسترسی داشته باشیم وجود دارد. این یک شی ReportRequest نامیده می شود و حداقل به موارد زیر نیاز دارد:
- شناسه نمای معتبر برای قسمت viewId.
- حداقل یک ورودی معتبر در قسمت dateRanges.
- حداقل یک ورودی معتبر در قسمت معیارها.
مشاهده شناسه
همانطور که گفته شد، چند چیز در این مرحله ساخت مورد نیاز است، که با viewId ما شروع می شود. همانطور که قبلاً تعریف کردهایم، ما فقط باید آن تابع را نام (VIEW_ID) فراخوانی کنیم تا اینکه دوباره کل View ID را اضافه کنیم.
اگر میخواهید در آینده دادهها را از یک نمای تحلیلی متفاوت جمعآوری کنید، فقط باید شناسه را در بلوک کد اولیه به جای هر دو تغییر دهید.
محدوده زمانی
سپس می توانیم محدوده تاریخ را برای تاریخ هایی که می خواهیم داده ها را جمع آوری کنیم اضافه کنیم. این شامل یک تاریخ شروع و یک تاریخ پایان است.
چند راه برای نوشتن این مورد در درخواست ساخت وجود دارد.
میتوانید تاریخهای تعریفشده را انتخاب کنید، بهعنوان مثال، بین دو تاریخ، با افزودن تاریخ در قالب سال-ماه-تاریخ، ‘startDate’: ‘2022-10-27’، ‘endDate’: ‘2022-11-27’.
یا اگر میخواهید دادههای 30 روز گذشته را مشاهده کنید، میتوانید تاریخ شروع را «30daysAgo» و تاریخ پایان را «امروز» تنظیم کنید.
متریک و ابعاد
مرحله نهایی تماس پاسخگویی اولیه، تنظیم معیارها و ابعاد است. متریک ها اندازه گیری های کمی از Google Analytics هستند، مانند تعداد جلسات، مدت زمان جلسه و نرخ پرش.
ابعاد ویژگی های کاربران، جلسات و اقدامات آنها است. به عنوان مثال، مسیر صفحه، منبع ترافیک و کلمات کلیدی مورد استفاده.
معیارها و ابعاد مختلفی وجود دارد که می توان به آنها دسترسی داشت. در این مقاله به بررسی همه آنها نمی پردازم، اما همه آنها را می توان همراه با اطلاعات و ویژگی های اضافی در اینجا یافت.
هر چیزی که در Google Analytics می توانید به آن دسترسی داشته باشید، می توانید در API به آن دسترسی پیدا کنید. این شامل تبدیلهای هدف، شروع و مقادیر، دستگاه مرورگر مورد استفاده برای دسترسی به وبسایت، صفحه فرود، ردیابی مسیر صفحه دوم و جستجوی داخلی، سرعت سایت و معیارهای مخاطب است.
معیارها و ابعاد هر دو در قالب فرهنگ لغت با استفاده از جفتهای کلید:مقدار اضافه میشوند. برای معیارها، کلید عبارت “expression” و سپس علامت دو نقطه (:) و سپس مقدار متریک ما خواهد بود که فرمت خاصی دارد.
به عنوان مثال، اگر بخواهیم تعداد جلسات را به دست آوریم، “expression” را اضافه می کنیم: “ga:sessions”. یا «عبارت»: «ga:newUsers» اگر بخواهیم تعداد همه کاربران جدید را ببینیم.
با ابعاد، کلید “نام” و سپس دو نقطه و مقدار بعد خواهد بود. به عنوان مثال، اگر بخواهیم مسیرهای مختلف صفحه را استخراج کنیم، عبارت ‘name’: ‘ga:pagePath’ خواهد بود.
یا ‘name’: ‘ga:medium’ برای دیدن ارجاعات مختلف منبع ترافیک به سایت.
ترکیب ابعاد و متریک ها
ارزش واقعی در ترکیب معیارها و ابعاد برای استخراج بینش های کلیدی است که بیشتر به آنها علاقه مندیم.
به عنوان مثال، برای دیدن تعداد جلساتی که از منابع ترافیکی مختلف ایجاد شدهاند، میتوانیم متریک خود را ga:sessions و بعد خود را ga:medium تنظیم کنیم.
response = service.reports().batchGet( body={ 'reportRequests': [ { 'viewId': VIEW_ID, 'dateRanges': [{'startDate': '30daysAgo', 'endDate': 'today'}], 'metrics': [{'expression': 'ga:sessions'}], 'dimensions': [{'name': 'ga:medium'}] }] } ).execute()
ایجاد یک DataFrame
پاسخی که از API دریافت میکنیم به شکل یک فرهنگ لغت است که همه دادهها در جفتهای key:value هستند. برای سهولت مشاهده و تجزیه و تحلیل داده ها، می توانیم آن را به یک دیتافریم پاندا تبدیل کنیم.
برای تبدیل پاسخ خود به یک دیتافریم، ابتدا باید چند لیست خالی ایجاد کنیم تا معیارها و ابعاد را نگه داریم.
سپس، با فراخوانی خروجی پاسخ، دادهها را از ابعاد به لیست ابعاد خالی و تعدادی از معیارها را به فهرست متریک اضافه میکنیم.
این داده ها را استخراج کرده و به لیست های قبلی ما اضافه می کند.
dim = [] metric = [] for report in response.get('reports', []): columnHeader = report.get('columnHeader', {}) dimensionHeaders = columnHeader.get('dimensions', []) metricHeaders = columnHeader.get('metricHeader', {}).get('metricHeaderEntries', []) rows = report.get('data', {}).get('rows', []) for row in rows: dimensions = row.get('dimensions', []) dateRangeValues = row.get('metrics', []) for header, dimension in zip(dimensionHeaders, dimensions): dim.append(dimension) for i, values in enumerate(dateRangeValues): for metricHeader, value in zip(metricHeaders, values.get('values')): metric.append(int(value))
افزودن داده های پاسخ
هنگامی که دادهها در آن لیستها قرار میگیرند، میتوانیم با تعریف نام ستونها، در پرانتز مربع، و تخصیص مقادیر فهرست به هر ستون، آنها را به یک دیتافریم تبدیل کنیم.
df = pd.DataFrame() df["Sessions"]= metric df["Medium"]= dim df= df[["Medium","Sessions"]] df.head()
نمونه های بیشتر درخواست پاسخ
معیارهای چندگانه
همچنین امکان ترکیب چندین معیار وجود دارد که هر جفت در براکت های مجعد اضافه شده و با کاما از هم جدا می شوند.
'metrics': [ {"expression": "ga:pageviews"}, {"expression": "ga:sessions"} ]
فیلتر کردن
همچنین میتوانید درخواست پاسخ API را بدهید که تنها معیارهایی را برمیگرداند که معیارهای خاصی را با افزودن فیلترهای متریک برمیگرداند. از فرمت زیر استفاده می کند:
if {metricName} {operator} {comparisonValue} return the metric
به عنوان مثال، اگر فقط می خواهید تعداد بازدید از صفحه را با بیش از ده بازدید استخراج کنید.
response = service.reports().batchGet( body={ 'reportRequests': [ { 'viewId': VIEW_ID, 'dateRanges': [{'startDate': '30daysAgo', 'endDate': 'today'}], 'metrics': [{'expression': 'ga:pageviews'}], 'dimensions': [{'name': 'ga:pagePath'}], "metricFilterClauses": [{ "filters": [{ "metricName": "ga:pageviews", "operator": "GREATER_THAN", "comparisonValue": "10" }] }] }] } ).execute()
فیلترها نیز برای ابعاد به روشی مشابه کار می کنند، اما عبارات فیلتر به دلیل ماهیت مشخصه ابعاد کمی متفاوت خواهند بود.
برای مثال، اگر میخواهید فقط بازدید از صفحه را از کاربرانی که با استفاده از مرورگر کروم از سایت بازدید کردهاند استخراج کنید، میتوانید یک عملگر EXTRACT تنظیم کنید و از «Chrome» به عنوان عبارت استفاده کنید.
response = service.reports().batchGet( body={ 'reportRequests': [ { 'viewId': VIEW_ID, 'dateRanges': [{'startDate': '30daysAgo', 'endDate': 'today'}], 'metrics': [{'expression': 'ga:pageviews'}], "dimensions": [{"name": "ga:browser"}], "dimensionFilterClauses": [ { "filters": [ { "dimensionName": "ga:browser", "operator": "EXACT", "expressions": ["Chrome"] } ] } ] } ] } ).execute()
اصطلاحات
از آنجایی که معیارها معیارهای کمی هستند، توانایی نوشتن عبارات نیز وجود دارد که مشابه معیارهای محاسبه شده عمل می کنند.
این شامل تعریف یک نام مستعار برای نشان دادن عبارت و تکمیل یک تابع ریاضی بر روی دو معیار است.
برای مثال، میتوانید با تقسیم تعداد تکمیلها بر تعداد کاربران، تکمیلها را برای هر کاربر محاسبه کنید.
response = service.reports().batchGet( body={ 'reportRequests': [ { 'viewId': VIEW_ID, 'dateRanges': [{'startDate': '30daysAgo', 'endDate': 'today'}], "metrics": [ { "expression": "ga:goal1completions/ga:users", "alias": "completions per user" } ] } ] } ).execute()
هیستوگرام ها
API همچنین به شما امکان می دهد ابعاد با یک عدد صحیح (عددی) را با استفاده از سطل های هیستوگرام در محدوده ها قرار دهید.
به عنوان مثال، سطل کردن ابعاد شمارش جلسات در چهار سطل 1-9، 10-99، 100-199، و 200-399، می توانید از نوع سفارش HISTOGRAM_BUCKET استفاده کنید و محدوده ها را در HistogramBuckets تعریف کنید.
response = service.reports().batchGet( body={ 'reportRequests': [ { 'viewId': VIEW_ID, 'dateRanges': [{'startDate': '30daysAgo', 'endDate': 'today'}], "metrics": [{"expression": "ga:sessions"}], "dimensions": [ { "name": "ga:sessionCount", "histogramBuckets": ["1","10","100","200","400"] } ], "orderBys": [ { "fieldName": "ga:sessionCount", "orderType": "HISTOGRAM_BUCKET" } ] } ] } ).execute()
در نتیجه
امیدوارم این یک راهنمای اساسی برای دسترسی به Google Analytics API، نوشتن برخی از درخواستهای مختلف، و جمعآوری برخی از بینشهای معنادار در قالبی آسان برای مشاهده به شما ارائه کرده باشد.
من کد ساخت و درخواست و قطعه های به اشتراک گذاشته شده را در این فایل GitHub اضافه کرده ام.
اگر هر یک از اینها را امتحان کنید و برنامه هایتان را برای کاوش بیشتر داده ها انجام دهید، خوشحال می شوم بشنوم.
منابع بیشتر:
تصویر ویژه: BestForBest/Shutterstock