analytics چگونه کار میکند

آموزش گوگل آنالیتیک – چطور analytics.js کار میکند ؟

سلام مجدد گرچه همه ی ما از گوگل آنالیتیک استفاده میکنیم ولی واقعا یک سری ابزارهای جالبی داره برای استفاده در محیط اپلیکیشن فقط کافیه یکمی با برنامه نویسی آشنا باشید دیگه تمومه خیلی کارهای باحالی رو میتونید انجام بدید من تصمیم گرفتم تجربیاتم رو در این وبلاگ بنویسیم پس با من همراه باشید

گرچه همه چیز را میتوانیم با استفاده از analytics.js ردگیری کنیم ، اما تو این مقاله میخواهیم باهم از متد ga() ( به command queue  شناخته میشود ) استفاده کنیم. در این مقاله یاد میگیریم که command queue چیست ؟ و چگونه استفاده میشود و نحوه ی اجرا کردن command ( دستور ) برای رهگیری بهتر تعامل کاربری با سایت استفاده میشود.

 

متد ga یا همان command queue ( ترجمه فارسی شده میشه صف دستور )

در JavaScript tracking snippet یک متد مادر به نام ga تعریف شده که به command queue شناخته میشود، حالا چرا بهش میکن command queue یا همان صف دستورات دلیلش اینه تا زمانی که analytics.js بارگزاری نشده است  دستوراتی که دریافت میکند به جای این که بلافاصله اجرا کند آن ها را در یک صف دستوری قرار میدهد و زمانی که کتابخانه analytics.js کامل بارگزاری شد به ترتیب دستورات را اجرا میکند.

 

همانطور که میدانید فانکشن ها یا همان متدها در جاوا اسکریپت میتوانند object هم باشند که یعنی میتوانند داخل خود صفت یا property داشته باشند، که  tracking snippet داخل متد ga یک صفت به اسم q تعریف کرده است که یک آرایه خالی می باشد. همانطور که گفتم تا زمانی که کتابخانه ی analytics.js بارگزاری نشده است هر دستوری که متد ga فراخوانی کند را در آخرین مقدار آرایه q قرار میدهد.

برای مثال :

اگر بعد از این مقدار ga فراخوانی شد یک دستور log قرار دهیم که مقدار های ga.q را نشان بدهد متوجه میشوید چه اتفاقی افتاده این command هایی که ارسال کردیم در آرایه q قرار گرفته اند که وقتی log میکنیم چون دو تا دستور صادر کردیم هر دو نمایش داده میشوند :

console.log(ga.q);

// Outputs the following:
// [
//   ['create', 'UA-XXXXX-Y', 'auto'],
//   ['send', 'pageview']
// ]

وقتی که analytics.js بارگزاری شد محتوای داخل آرایه ga.q را بررسی میکند و دستورات را به ترتیب اجرا میکند ، و از این به بعد اگر دوباره متد ga() فراخوانی شد، دستورات تو صف قرار نمیگیرند و بلافاصله اجرا میشوند.

این روش به توسعه دهندگان دسترسی استفاده از ga() میدهد تا نگرانی در این رابطه نداشته باشند، چون چه بخوای چه نخوای analytics.js آخر بارگزاری میشود.

 

افزودن فرمان ( Command ) به صف فرمان ( Command Queue ) به متد ga :

اگر دقت کرده باشید تمام فراخوانی های متد ga از نظر ساختاری با هم مشترک هستند، اولین پارامتری که این متد دریافت میکند، نام دستور ( command ) میباشد که یک رشته می باشد که مشخص کننده یک متد خاصی در analytics.js می باشد و پارامتر های دیگر آرگومان هایی هستند که به متد مورد نظر پاس داده میشود.

در اینجا “متد” دستورات خاصی ( command )  هستند که  به متدهای همگانی اشاره دارد که میتوانند استفاده شوند مانند create یا متدهای از شی ga نیز استفاده شوند مانند متد send

نکته ی دیگیری که باید مد نظر داشته باشید این هست که اگر متد ga یک دستوری دریافت کند که قابل تشخیص نباشد نادیده میگیرد پس خیالتون راحت باشه که اروری صادر نمیشود.

پارامتر های command ( دستورات )

اکثر دستورات analytics.js پارامتر ورودی دریافت میکنند که فرمت های  متفاوتی دارد و این پارامتر ها به راحت ترین شکل ممکن به متد موردنظر پاس داده میشوند.

به طور مثال دو دستور زیر را با هم دیگه بررسی میکنیم

ga('create', 'UA-XXXXX-Y', 'auto');
ga('send', 'pageview');

 در خط اول که دستور create هستش فیلد های trackingId , CookieDomain و name دریافت میکند. اما در خط دوم که دستور send هستش پارامتر دوم  که یک پارامتر اختیاری می باشد شی ای از نوع hitType دریافت می کند.

با این که نحوه ی پارامتر دادن به متدهای مورد نظر در مثال بالا متفاوت بود اما میتوان تمام متد ها را به صورت فیلدهایی در یک شی تعریف کرد حالا دو دستور بالا رو دوباره با این روش مینویسیم به مثال زیر دقت کنید :

ga('create', {
  trackingId: 'UA-XXXXX-Y',
  cookieDomain: 'auto'
});
ga('send', {
  hitType: 'pageview'
});

 امیدورام مطلب این قسمت به کار شما آمده باشه اگر نظری هست یا مشکلی در نگراش و حتی تخصصی بود که بهش توجه نکردم خیلی خوشحال میشم که بهم گوشزد کنید با آرزوی موفقیت بیشتر برای شما

 

مهدی نیکخو

در حال حاضر مشغول خدمت سربازی ام، یه گروهبان خوشحال که سعی میکنه در حین خدمت یادبگیره، یاد بده و از همه مهم تر تلاش کنه تا دنیایی بهتر داشته باشیم.

نظر شما چیست؟