ga.js คือไลบรารี JavaScript สําหรับการวัดว่าผู้ใช้โต้ตอบกับเว็บไซต์ของคุณอย่างไร นี่คือไลบรารีเดิม หากคุณกําลังเริ่มต้นใช้งาน Google Analytics คุณควรใช้ไลบรารีการติดตามล่าสุด analytics.js
การเริ่มต้นใช้งานโค้ดติดตามอย่างรวดเร็ว
โดยข้อมูลโค้ด Analytics คือโค้ด JavaScript ขนาดเล็กที่นําไปวางในหน้าเว็บ ซึ่งจะเปิดใช้งานการติดตาม Google Analytics ด้วยการแทรก ga.js
ลงในหน้าเว็บ หากต้องการใช้โค้ดนี้ในหน้าเว็บ ให้คัดลอกข้อมูลโค้ดด้านล่างโดยใส่รหัสเว็บพร็อพเพอร์ตี้ของคุณแทน UA-XXXXX-X
วางข้อมูลโค้ดนี้ในหน้าเทมเพลตเว็บไซต์เพื่อให้ปรากฏก่อนแท็กปิด </head>
หากคุณจําเป็นต้องทํามากกว่าการติดตามหน้าเว็บพื้นฐาน โปรดดูข้อมูลอ้างอิงการติดตามสําหรับรายการของเมธอดที่มีอยู่ใน API และอ่านคู่มือการใช้งานเพื่อดูรายละเอียดเกี่ยวกับการใช้ไวยากรณ์แบบอะซิงโครนัส ดูคําแนะนําทีละขั้นตอนในการตั้งค่าการติดตามได้จากบทความของศูนย์ช่วยเหลือในหัวข้อการตั้งค่าการติดตาม
<script type="text/javascript"> var _gaq = _gaq || []; _gaq.push(['_setAccount', 'UA-XXXXX-X']); _gaq.push(['_trackPageview']); (function() { var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); })(); </script>
ข้อมูลโค้ดด้านบนแสดงการกําหนดค่าขั้นต่ําที่จําเป็นสําหรับการติดตามหน้าเว็บแบบไม่พร้อมกัน โดยจะใช้ _setAccount
เพื่อกําหนดรหัสเว็บพร็อพเพอร์ตี้ จากนั้นเรียก _trackPageview
เพื่อส่งข้อมูลการติดตามกลับไปที่เซิร์ฟเวอร์ Google Analytics
สําคัญ: หากกําลังอัปเดตหน้าเว็บจากข้อมูลโค้ดแบบดั้งเดิมเป็นเวอร์ชันล่าสุดแบบไม่พร้อมกัน คุณควรนําข้อมูลโค้ดการติดตามที่มีอยู่ออกก่อน เราไม่แนะนําให้ใช้ข้อมูลโค้ดทั้งสองร่วมกันในหน้าเดียวกัน โปรดดูวิธีการย้ายข้อมูลในการย้ายข้อมูลไปยัง Async
วิธีการทํางานของไวยากรณ์แบบอะซิงโครนัส
ออบเจ็กต์ _gaq
คือสิ่งที่ทําให้ไวยากรณ์ไม่ตรงกัน
โดยทําหน้าที่เป็นคิว ซึ่งเป็นโครงสร้างข้อมูลแบบได้รับข้อมูลจากอันดับแรกซึ่งรวบรวมการเรียก API จนถึง ga.js
พร้อมที่จะดําเนินการ หากต้องการเพิ่มบางอย่างไปยังคิว ให้ใช้เมธอด _gaq.push
หากต้องการพุชการเรียก API ไปยังคิว คุณต้องแปลงการเรียกจากไวยากรณ์ JavaScript แบบดั้งเดิมเป็นอาร์เรย์คําสั่ง อาร์เรย์คําสั่งเป็นเพียงอาร์เรย์ JavaScript ที่สอดคล้องกับรูปแบบที่กําหนด องค์ประกอบแรกในอาร์เรย์คําสั่งคือชื่อของเมธอดออบเจ็กต์เครื่องมือติดตามที่คุณต้องการเรียกใช้ ต้องเป็นสตริง องค์ประกอบที่เหลือคืออาร์กิวเมนต์ที่คุณต้องการส่งไปยังเมธอดของออบเจ็กต์เครื่องมือติดตาม ค่าเหล่านี้อาจเป็นค่า JavaScript ใดก็ได้
โค้ดต่อไปนี้จะเรียกใช้ _trackPageview()
โดยใช้ไวยากรณ์แบบเดิม:
var pageTracker = _gat._getTracker('UA-XXXXX-X'); pageTracker._trackPageview();
โค้ดที่เหมือนกันในไวยากรณ์แบบไม่พร้อมกันจะต้องมีการเรียกไปยัง _gaq.push
2 ครั้ง
_gaq.push(['_setAccount', 'UA-XXXXX-X']); _gaq.push(['_trackPageview']);
ในไวยากรณ์แบบอะซิงโครนัส การสร้างออบเจ็กต์เครื่องมือติดตามจะโดยนัย แต่เรายังคงต้องมีวิธีตั้งค่ารหัสเว็บพร็อพเพอร์ตี้สําหรับเครื่องมือติดตาม เพิ่มเมธอด _setAccount
เพื่อเพิ่มความสามารถนี้แล้ว ส่วนเมธอดเครื่องมือติดตามออบเจ็กต์อื่นๆ ทั้งหมดจะเหมือนกันทั้งในการติดตามแบบอะซิงโครนัสและแบบดั้งเดิม ไวยากรณ์แตกต่างกันเท่านั้น
ดูข้อมูลเพิ่มเติมเกี่ยวกับไวยากรณ์แบบอะซิงโครนัสได้ในข้อมูลอ้างอิงการติดตามสําหรับเมธอด _gaq.push
การติดตามด้วยเครื่องจัดการกิจกรรม HTML
นอกจากนี้ ควรใช้ไวยากรณ์การติดตามแบบอะซิงโครนัสจากภายในเครื่องจัดการเหตุการณ์ DOM เช่น ปุ่มต่อไปนี้จะสร้างเหตุการณ์เมื่อมีการคลิก
<button onclick="_gaq.push(['_trackEvent', 'button3', 'clicked'])"></button>
แม้ว่าจะคลิกปุ่มนี้ก่อนที่เบราว์เซอร์จะโหลด ga.js
เสร็จ แต่กิจกรรมก็จะได้รับการบันทึกและดําเนินการในที่สุด เมื่อใช้การติดตามแบบดั้งเดิม เบราว์เซอร์อาจสร้างข้อยกเว้นในสถานการณ์นี้
พุชฟังก์ชันลงในคิว
นอกจากอาร์เรย์คําสั่งแล้ว คุณยังพุชออบเจ็กต์ฟังก์ชันไปยังคิว _gaq
ได้ด้วย ฟังก์ชันดังกล่าวสามารถมี JavaScript ใดก็ได้ที่กําหนดเอง และเช่นเดียวกับอาร์เรย์คําสั่ง ฟังก์ชันเหล่านี้จะทํางานตามลําดับที่พุชไปยัง _gaq
เทคนิคนี้มีประโยชน์ในการเรียก API การติดตามที่แสดงค่า ตัวอย่างเช่น โค้ดต่อไปนี้จะสร้าง URL ของ Linker และตั้งค่าพร็อพเพอร์ตี้ href
สําหรับลิงก์ที่มีผลลัพธ์
_gaq.push(function() { var pageTracker = _gat._getTracker('UA-XXXXX-X'); var link = document.getElementById('my-link-id'); link.href = pageTracker._getLinkerUrl('http://example.com/'); });
ตัวอย่างด้านบนใช้ _gat
เพื่อสร้างออบเจ็กต์เครื่องมือติดตาม แต่เนื่องจากโค้ดดังกล่าวถูกกําหนดให้ตัวแปรท้องถิ่น โค้ดที่อยู่นอกฟังก์ชันจึงใช้ไม่ได้ แม้ว่าระบบจะยอมรับได้ แต่คุณใช้เมธอด _gat._createTracker
เพื่อสร้างออบเจ็กต์ถาวรที่เข้าถึงได้ทั่วโลก
โค้ดต่อไปนี้สาธิตการทํางาน
_gaq.push(function() { var pageTracker = _gat._createTracker('UA-XXXXX-X', 'myTracker'); var link = document.getElementById('my-link-id'); link.href = pageTracker._getLinkerUrl('http://example.com/'); }); _gaq.push(['myTracker._trackPageview']);
ตัวอย่างด้านบนสร้างเครื่องมือติดตามแบบอะซิงโครนัสภายในฟังก์ชัน จากนั้นอ้างอิงภายหลังตามชื่อในอาร์เรย์คําสั่ง
นอกจากนี้ยังมีกรณีการใช้งานตรงกันข้ามด้วย เช่น หากคุณจําเป็นต้องใช้ออบเจ็กต์เครื่องมือติดตามแบบอะซิงโครนัสที่สร้างขึ้นผ่านอาร์เรย์คําสั่งที่ส่งมาก่อนหน้านี้ ให้ใช้เมธอด _gat._getTrackerByName
โค้ดต่อไปนี้สาธิตวิธีการทํางาน
_gaq.push(['myTracker._setAccount', 'UA-XXXXX-X']); _gaq.push(function() { var pageTracker = _gat._getTrackerByName('myTracker'); var link = document.getElementById('my-link-id'); link.href = pageTracker._getLinkerUrl('http://example.com/'); });
พุช 1 ครั้ง คําสั่งหลายรายการ
แทนที่จะต้องพิมพ์ _gaq.push(...)
ในการเรียกแต่ละครั้ง คุณจะส่งคําสั่งทั้งหมดได้ในคราวเดียว โค้ดต่อไปนี้แสดงเทคนิคนี้
_gaq.push( ['_setAccount', 'UA-XXXXX-X'], ['_setDomainName', 'example.com'], ['_setCustomVar', 1, 'Section', 'Life & Style', 3], ['_trackPageview'] );
วิธีนี้ได้ผลเพราะเมธอด _gaq.push
เลียนแบบเมธอด Array.push
ซึ่งอนุญาตให้พุชรายการหลายรายการด้วยการเรียกใช้ครั้งเดียว
การแยกข้อมูลโค้ด
หากคุณต้องการใช้ข้อมูลโค้ด Analytics ที่ด้านล่างของหน้า คุณควรทราบว่าไม่จําเป็นต้องวางข้อมูลโค้ดทั้งหมดไว้ด้านล่างนี้
คุณยังคงสามารถใช้ประโยชน์สูงสุดจากการโหลดแบบอะซิงโครนัสได้โดยแยกข้อมูลโค้ดออกเป็นครึ่งส่วน โดยใส่ครึ่งแรกที่ด้านบนของหน้าไว้และย้ายส่วนที่เหลือไปยังด้านล่าง เนื่องจากส่วนแรกของข้อมูลโค้ดการติดตามมีผลเพียงเล็กน้อยต่อการแสดงผลหน้าเว็บ คุณจึงเว้นส่วนดังกล่าวไว้ที่ด้านบนและใส่ส่วนที่จะแทรก ga.js
ไว้ด้านล่างได้
หน้าเว็บที่มีข้อมูลโค้ดแบบอะซิงโครนัสที่แบ่งครึ่งจะมีหน้าตาดังนี้
<html> <head> <script type="text/javascript"> var _gaq = _gaq || []; _gaq.push(['_setAccount', 'UA-XXXXX-X']); _gaq.push(['_trackPageview']); </script> </head> <body> <p>Page Content</p> <script src="some_random_script.js"></script> <p>Page Content</p> <script type="text/javascript"> (function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script> </body> </html>
โค้ดทั้ง 2 ชิ้นต้องรวมอยู่ในแท็กสคริปต์ของตนเอง แต่จําเป็นต้องย้ายเพียง 6 บรรทัดสุดท้ายของข้อมูลโค้ดแบบอะซิงโครนัสต้นฉบับเท่านั้น ทุกบรรทัดที่พุชวิธีการไปยัง _gaq
จะอยู่ด้านบนสุดได้
การหลีกเลี่ยงข้อผิดพลาดที่พบบ่อย
เมื่อใช้ไวยากรณ์แบบอะซิงโครนัสหรือแบบดั้งเดิม ให้พิจารณาสิ่งต่อไปนี้
- ชื่อเมธอดจะต้องตรงตามตัวพิมพ์เล็กและใหญ่
หากคุณใช้ชื่อเมธอดโดยไม่มีตัวพิมพ์เล็ก/ใหญ่ที่เหมาะสม การเรียกใช้เมธอดจะไม่ทํางาน ตัวอย่าง_gaq.push(['_trackpageview']); // bad _gaq.push(['_trackPageview']); // good
- ใช้ชื่อเมธอดที่ถูกต้อง
หากการติดตามทํางานไม่ถูกต้อง ให้ตรวจสอบว่าได้ใช้ชื่อที่ถูกต้องของเมธอด ตัวอย่าง_gaq.push(['_setDomain', 'example.com']); // bad _gaq.push(['_setDomainName', 'example.com']); // good
- ควรส่งเฉพาะสตริงมาพร้อมกับเครื่องหมายคําพูด ส่วนประเภทอื่นๆ ทั้งหมดไม่ต้องใส่เครื่องหมายคําพูด
ค่าที่ไม่ใช่สตริง เช่น บูลีน สัญพจน์ ออบเจ็กต์ หรืออาร์เรย์ ควรส่งโดยไม่มีเครื่องหมายคําพูด ใช้เฉพาะเครื่องหมายคําพูดเมื่อคุณส่งสิ่งที่ตั้งใจจะตีความเป็นสตริง หากคุณกําลังย้ายข้อมูลจากไวยากรณ์แบบเดิม พารามิเตอร์ฟังก์ชันที่ส่งโดยไม่มีเครื่องหมายคําพูดควรไม่มีเครื่องหมายตัดสินในไวยากรณ์แบบอะซิงโครนัส ตัวอย่าง:_gaq.push(['_setAllowLinker', 'false']); // bad _gaq.push(['_setAllowLinker', false]); // good
- ตรวจสอบว่าสตริงไม่มีช่องว่างนําหน้าหรือต่อท้าย
ตัวอย่าง_gaq.push(['_setAccount', ' UA-65432-1']); // bad _gaq.push(['_setAccount', 'UA-65432-1']); // good
การปิดใช้งานการติดตาม
ในบางกรณี คุณอาจจําเป็นต้องปิดใช้โค้ดติดตาม Google Analytics ในหน้าเว็บโดยไม่ต้องนําข้อมูลโค้ดออก ตัวอย่างเช่น คุณอาจทําสิ่งนี้ได้หากนโยบายความเป็นส่วนตัวของเว็บไซต์ให้ผู้เข้าชมเลือกไม่ใช้การติดตามของ Google Analytics ได้
ตอนนี้ข้อมูลโค้ดการติดตาม ga.js
มีพร็อพเพอร์ตี้หน้าต่างที่เมื่อตั้งค่าเป็น true
จะปิดใช้งานข้อมูลโค้ดการติดตามไม่ให้ส่งข้อมูลไปยัง Google Analytics
เมื่อ Google Analytics พยายามตั้งค่าคุกกี้หรือส่งข้อมูลไปยังเซิร์ฟเวอร์ Google Analytics ระบบจะตรวจสอบว่าพร็อพเพอร์ตี้นี้ตั้งค่าเป็น true
หรือไม่ หากมี ก็จะมีผลเหมือนกับว่าผู้เข้าชมได้ติดตั้งโปรแกรมไม่ใช้ Google Analytics บนเบราว์เซอร์
หากต้องการปิดใช้งานการติดตาม ให้ตั้งค่าพร็อพเพอร์ตี้ window ต่อไปนี้เป็น true:
window['ga-disable-UA-XXXXXX-Y'] = true;
ในกรณีที่ค่า UA-XXXXXX-Y
สอดคล้องกับรหัสเว็บพร็อพเพอร์ตี้ที่คุณต้องการปิดใช้การติดตาม
คุณต้องตั้งค่าพร็อพเพอร์ตี้หน้าต่างนี้ก่อนที่จะเรียกใช้โค้ดติดตาม ต้องตั้งค่าพร็อพเพอร์ตี้นี้ในแต่ละหน้าที่ต้องการปิดใช้การติดตามของ Google Analytics หากไม่มีการตั้งค่าพร็อพเพอร์ตี้หรือตั้งค่าเป็น "เท็จ" การติดตามจะทํางานตามปกติ
เช่น หากโค้ดติดตามของ Google Analytics ในหน้าเว็บมีข้อมูลต่อไปนี้
_gaq.push['_setAccount', 'UA-123456-1']
และคุณต้องการปิดใช้โค้ดติดตามนั้นจากการตั้งค่าคุกกี้หรือส่งข้อมูลกลับไปยัง Google Analytics ให้ใช้โค้ดต่อไปนี้ก่อนที่จะมีการเรียกโค้ดติดตาม
window['ga-disable-UA-123456-1'] = true;
หากใช้เครื่องมือติดตามหลายตัวในหน้าเว็บที่มีรหัสเว็บพร็อพเพอร์ตี้หลายตัว คุณต้องตั้งค่าตัวแปร window['ga-disable-UA-XXXXXX-Y']
ที่เทียบเท่าเป็น true
สําหรับพร็อพเพอร์ตี้เว็บแต่ละรายการเพื่อปิดใช้การติดตาม Google Analytics ในหน้านั้นโดยสมบูรณ์
ตัวอย่าง
ต่อไปนี้คือตัวอย่างง่ายๆ ของโค้ดบางส่วนที่คุณสามารถใช้เพื่อจัดเตรียมฟังก์ชันการเลือกไม่ใช้ให้กับผู้ใช้
ก่อนอื่น ให้เพิ่มลิงก์ HTML ใหม่ลงในเว็บไซต์เพื่อเรียกใช้ตรรกะการเลือกไม่ใช้
<a href="javascript:gaOptout()">Click here to opt-out of Google Analytics</a>
จากนั้น เพิ่มข้อมูลโค้ดต่อไปนี้ก่อนข้อมูลโค้ด ga.js อย่าลืมแทนที่ค่า gaProperty
จาก UA-XXXX-Y
เป็นพร็อพเพอร์ตี้ที่ใช้ในเว็บไซต์
นี่คือค่าเดียวกับที่คุณส่งต่อไปยังคําสั่ง _setAccount
<script> // Set to the same value as the web property used on the site var gaProperty = 'UA-XXXX-Y'; // Disable tracking if the opt-out cookie exists. var disableStr = 'ga-disable-' + gaProperty; if (document.cookie.indexOf(disableStr + '=true') > -1) { window[disableStr] = true; } // Opt-out function function gaOptout() { document.cookie = disableStr + '=true; expires=Thu, 31 Dec 2099 23:59:59 UTC; path=/'; window[disableStr] = true; } </script>
เมื่อผู้ใช้คลิกลิงก์ HTML ที่เลือกไม่ใช้ ฟังก์ชัน gaOptout
ที่กําหนดเองจะทํางาน ซึ่งจะตั้งค่าคุกกี้เป็นเวลานานในอนาคตและปิดใช้การรวบรวมข้อมูล analytics.js
เมื่อผู้ใช้กลับมาที่เว็บไซต์นี้ สคริปต์ข้างต้นจะตรวจสอบเพื่อดูว่ามีการตั้งค่าคุกกี้ที่เลือกไม่รับไว้หรือไม่ หากมี การรวบรวมข้อมูล analytics.js ก็จะถูกปิดใช้ด้วย
การบังคับใช้ SSL (HTTPS)
หากต้องการบังคับให้ Google Analytics ส่งข้อมูลโดยใช้ SSL เสมอ แม้จากหน้าเว็บที่ไม่ปลอดภัย (HTTP) ก็ให้ใช้เมธอด
_gat._forceSSL
ตามตัวอย่างนี้
_gaq.push(['_setAccount', 'UA-12345-1']); _gaq.push(['_gat._forceSSL']); // Send all hits using SSL, even from insecure (HTTP) pages. _gaq.push(['_trackPageview']);