Nick Mihailovski ทีม Google Analytics API – สิงหาคม 2012
บทแนะนำนี้จะอธิบายวิธีเข้าถึง Management และ Core Reporting API ใน Google ชีตโดยใช้ Apps Script
เกริ่นนำ
คุณจะใช้ Google Analytics API และ Google Apps Script เพื่อเข้าถึงข้อมูล Google Analytics จาก Google ชีตได้ การทำเช่นนี้มีประสิทธิภาพมากเพราะช่วยให้คุณใช้ประโยชน์จากฟีเจอร์ที่ยอดเยี่ยมทั้งหมดของ Google ชีตกับข้อมูลการวิเคราะห์ได้ เช่น การแชร์ที่ง่ายดาย การทำงานร่วมกัน เครื่องมือการสร้างแผนภูมิ และการแสดงข้อมูลผ่านภาพ
บทแนะนำนี้จะแนะนำโค้ดที่จำเป็นในการเข้าถึงข้อมูล Google Analytics ใน Google ชีตโดยใช้ Google Apps Script
ภาพรวม
บทแนะนำนี้จะแสดงวิธีลงทะเบียนและกำหนดค่าสภาพแวดล้อม Apps Script เพื่อใช้ Google Analytics API เมื่อกำหนดค่าแล้ว บทแนะนำจะแนะนำวิธีเรียกข้อมูลรหัสข้อมูลพร็อพเพอร์ตี้ (โปรไฟล์) ของผู้ใช้ที่ได้รับอนุญาตโดยใช้ API การจัดการ จากนั้นวิธีใช้รหัสข้อมูลพร็อพเพอร์ตี้ (โปรไฟล์) เพื่อค้นหา API การรายงานหลักเพื่อดึงข้อมูลคีย์เวิร์ดที่ใช้ค้นหาบนอุปกรณ์เคลื่อนที่ 250 อันดับแรกจาก Google สุดท้ายจะแทรกผลลัพธ์ลงในสเปรดชีตของ Google เมื่อคุณมีข้อมูลแล้ว บทแนะนำจะพูดถึงวิธีดึงข้อมูลโดยอัตโนมัติด้วย
เมื่อสร้างแอปพลิเคชันโดยใช้ Google Analytics API และ Apps Script โดยทั่วไปคุณจะต้องทำตามขั้นตอนต่อไปนี้
- เปิดใช้ API ของ Google Analytics ใน Google ชีต
- ทำงานกับ API ของ Google Analytics
มาดูรายละเอียดของแต่ละขั้นตอนกัน
เปิดใช้ Google Analytics API ใน Apps Script
หากต้องการเปิดใช้การเข้าถึงข้อมูล Google Analytics จากภายใน Google ชีต ให้ทำตามขั้นตอนต่อไปนี้
- สร้างไฟล์ Google ชีต ตั้งชื่อเก๋ๆ หน่อย
- สร้าง Apps Script ใหม่
- ในเมนู ให้ไปที่ส่วนขยาย > Apps Script
- หากเมนูปรากฏขึ้น ให้คลิกโครงการเปล่า
- ตั้งชื่อโปรเจ็กต์ ตรวจสอบว่ามีชื่อที่น่าสนใจ
เมื่อมีสคริปต์ใหม่แล้ว คุณจะต้องเปิดใช้บริการ Google Analytics
- ในเครื่องมือแก้ไขสคริปต์ ให้เลือกทรัพยากร > บริการขั้นสูงของ Google...
- ในกล่องโต้ตอบที่ปรากฏขึ้น ให้คลิกสวิตช์เปิด/ปิดข้าง Google Analytics API
- ที่ด้านล่างของกล่องโต้ตอบ ให้คลิกลิงก์สำหรับ Google Developers Console
- ในคอนโซลใหม่ ให้คลิกสวิตช์เปิด/ปิดข้าง Google Analytics API อีกครั้ง (เมื่อเปิดใช้แล้ว ไอคอนจะข้ามไปที่ด้านบนของหน้า)
- กลับไปที่เครื่องมือแก้ไขสคริปต์ แล้วคลิกตกลงในกล่องโต้ตอบ
กล่องโต้ตอบสีเหลืองเล็กๆ จะปรากฏขึ้นแจ้งว่าคุณได้เพิ่มบริการ Google APIs ใหม่ลงในสคริปต์เรียบร้อยแล้ว ตอนนี้คุณก็พร้อมที่จะเขียนสคริปต์บทแรกแล้ว
ใช้งาน Google Analytics API
สคริปต์ในบทแนะนำนี้จะค้นหา API ของ Google Analytics สำหรับคีย์เวิร์ดการค้นหาบนอุปกรณ์เคลื่อนที่ 250 อันดับแรกของ Google จากนั้นแสดงผลลัพธ์ใน Google ชีต สคริปต์จะต้องดำเนินการตามขั้นตอนต่อไปนี้เพื่อให้บรรลุเป้าหมายนี้
- ดึงข้อมูลการแสดงผลครั้งแรก (โปรไฟล์) ของผู้ใช้ที่ได้รับอนุญาต
- ค้นหาข้อมูลใน API การรายงานหลัก
- แทรกข้อมูลลงในสเปรดชีต
เพิ่มฟังก์ชันต่อไปนี้ในโปรเจ็กต์ที่ว่างเปล่า
function runDemo() { try { var firstProfile = getFirstProfile(); var results = getReportDataForProfile(firstProfile); outputToSpreadsheet(results); } catch(error) { Browser.msgBox(error.message); } }
ในโค้ดด้านบน มีการใช้บล็อก try...catch
เพื่อจัดการข้อผิดพลาด API หากมีข้อผิดพลาดเกิดขึ้น การดำเนินการของโปรแกรมจะหยุดลงและข้อผิดพลาดจะแสดงอยู่ในกล่องข้อความ ในบล็อก try
จะมีการใช้ฟังก์ชันเพื่อดำเนินการแต่ละขั้นตอนที่สคริปต์จะดำเนินการ คราวนี้ลองเพิ่มโค้ดสำหรับแต่ละฟังก์ชัน
ดึงข้อมูลการดู (โปรไฟล์) ครั้งแรกของผู้ใช้ที่ได้รับอนุญาต
ใน Google Analytics รายงานแต่ละฉบับเป็นของข้อมูลพร็อพเพอร์ตี้ (โปรไฟล์) และจะระบุโดยรหัสข้อมูลพร็อพเพอร์ตี้ (โปรไฟล์) ดังนั้นเมื่อคุณระบุการค้นหาข้อมูลรายงาน คุณต้องระบุรหัสข้อมูลพร็อพเพอร์ตี้ (โปรไฟล์) ของข้อมูลพร็อพเพอร์ตี้ (โปรไฟล์) ที่คุณต้องการดึงข้อมูลด้วย
Google Analytics Management API ให้สิทธิ์เข้าถึงบัญชี เว็บพร็อพเพอร์ตี้ และเอนทิตีข้อมูลพร็อพเพอร์ตี้ (โปรไฟล์) ทั้งหมดที่เป็นของผู้ใช้ เอนทิตีแต่ละรายการเหล่านี้อยู่ในลำดับชั้น และคุณจะข้ามผ่านลำดับชั้นนี้แบบเป็นโปรแกรมเพื่อเรียกข้อมูลรหัสข้อมูลพร็อพเพอร์ตี้ (โปรไฟล์) ของผู้ใช้ที่ได้รับอนุญาตได้
ฟังก์ชันที่ 2 ที่เราจะเขียนจะข้ามผ่านลำดับชั้นของ Management API และแสดงผลมุมมองแรก (โปรไฟล์) ของผู้ใช้ คัดลอกและวางโค้ดต่อไปนี้ลงในโปรเจ็กต์ Apps Script
function getFirstProfile() { var accounts = Analytics.Management.Accounts.list(); if (accounts.getItems()) { var firstAccountId = accounts.getItems()[0].getId(); var webProperties = Analytics.Management.Webproperties.list(firstAccountId); if (webProperties.getItems()) { var firstWebPropertyId = webProperties.getItems()[0].getId(); var profiles = Analytics.Management.Profiles.list(firstAccountId, firstWebPropertyId); if (profiles.getItems()) { var firstProfile = profiles.getItems()[0]; return firstProfile; } else { throw new Error('No views (profiles) found.'); } } else { throw new Error('No webproperties found.'); } } else { throw new Error('No accounts found.'); } }
ในฟังก์ชันนี้ ระบบจะค้นหาคอลเล็กชันบัญชีก่อนโดยใช้เมธอด Analytics.Management.Accounts.list
หากผู้ใช้ที่ได้รับอนุญาตมีบัญชี Google Analytics ระบบจะดึงข้อมูลรหัสบัญชีแรก ถัดไป ระบบจะค้นหาคอลเล็กชันเว็บพร็อพเพอร์ตี้โดยการเรียกใช้เมธอด Analytics.Management.Webproperties.list
แล้วส่งผ่านเมธอดรหัสบัญชีที่ดึงมาในขั้นตอนก่อนหน้า
หากมีเว็บพร็อพเพอร์ตี้อยู่ ระบบจะค้นหาคอลเล็กชันข้อมูลพร็อพเพอร์ตี้ (โปรไฟล์) ในที่สุดโดยใช้เมธอด Analytics.Management.Profiles.list
ระบบจะส่งทั้งรหัสบัญชีและรหัสเว็บพร็อพเพอร์ตี้เป็นพารามิเตอร์ไปยังเมธอดนี้ หากมีข้อมูลพร็อพเพอร์ตี้ (โปรไฟล์) อยู่ ระบบจะแสดงข้อมูลพร็อพเพอร์ตี้แรก (โปรไฟล์)
หากเมื่อใดก็ตามที่เกิดข้อผิดพลาดของ API หรือการตอบสนองของ API ไม่มีผลลัพธ์ ระบบจะแสดงข้อผิดพลาดพร้อมข้อความที่อธิบายว่าไม่พบผลลัพธ์ บล็อก catch
ในฟังก์ชัน runDemo
ด้านบนจะตรวจจับข้อผิดพลาดนี้และพิมพ์ข้อความไปยังผู้ใช้
หลังจากที่สคริปต์แสดงผลแล้ว ตอนนี้จึงสามารถค้นหาข้อมูลการรายงานได้
ค้นหาข้อมูลใน API การรายงานหลัก
เมื่อมีรหัสข้อมูลพร็อพเพอร์ตี้ (โปรไฟล์) แล้ว คุณจะใช้ Core Reporting API เพื่อค้นหาข้อมูลรายงานของ Google Analytics ได้ ในส่วนนี้ คุณจะได้ดูวิธีค้นหา API นี้โดยใช้ Apps Script
เพิ่มโค้ดต่อไปนี้ในโปรเจ็กต์ Apps Script
function getReportDataForProfile(firstProfile) { var profileId = firstProfile.getId(); var tableId = 'ga:' + profileId; var startDate = getLastNdays(14); // 2 weeks (a fortnight) ago. var endDate = getLastNdays(0); // Today. var optArgs = { 'dimensions': 'ga:keyword', // Comma separated list of dimensions. 'sort': '-ga:sessions,ga:keyword', // Sort by sessions descending, then keyword. 'segment': 'dynamic::ga:isMobile==Yes', // Process only mobile traffic. 'filters': 'ga:source==google', // Display only google traffic. 'start-index': '1', 'max-results': '250' // Display the first 250 results. }; // Make a request to the API. var results = Analytics.Data.Ga.get( tableId, // Table id (format ga:xxxxxx). startDate, // Start-date (format yyyy-MM-dd). endDate, // End-date (format yyyy-MM-dd). 'ga:sessions,ga:pageviews', // Comma seperated list of metrics. optArgs); if (results.getRows()) { return results; } else { throw new Error('No views (profiles) found'); } } function getLastNdays(nDaysAgo) { var today = new Date(); var before = new Date(); before.setDate(today.getDate() - nDaysAgo); return Utilities.formatDate(before, 'GMT', 'yyyy-MM-dd'); }
ส่วนแรกของโค้ดจะสร้างการค้นหา Core Reporting API โดยใช้เมธอด Analytics.Data.Ga.get
เมธอดจะยอมรับพารามิเตอร์จำนวนมากที่ระบุประเภทรายงานที่จะดึงข้อมูล การค้นหา Core Reporting API แต่ละรายการประกอบด้วยชุดพารามิเตอร์ที่จําเป็นและไม่บังคับ ระบบจะส่งพารามิเตอร์ที่จำเป็นไปยังเมธอดเป็นพารามิเตอร์ในขณะที่ส่งพารามิเตอร์ที่ไม่บังคับในรูปแบบออบเจ็กต์
ต้องมีพารามิเตอร์ table ID
และสร้างขึ้นโดยการรวมคำนำหน้า ga:
เข้ากับรหัสข้อมูลพร็อพเพอร์ตี้ (โปรไฟล์) โค้ดจะสร้างรหัสตารางโดยใช้รหัสข้อมูลพร็อพเพอร์ตี้ (โปรไฟล์) ที่ดึงมาในขั้นตอนก่อนหน้า นอกจากนี้ คุณจะต้องระบุวันที่เริ่มต้นและวันที่สิ้นสุด รวมถึงระบุช่วงวันที่ของข้อมูลที่ต้องการเรียกดูด้วย
ทั้ง 2 ค่าจะคำนวณตามวันที่ของวันนี้โดยใช้ฟังก์ชัน getLastNdays
สุดท้าย ระบบจะส่งพารามิเตอร์ที่ไม่บังคับทั้งหมดไปยังฟังก์ชันโดยใช้ออบเจ็กต์ optArgs
เมื่อเมธอด Analytics.Data.Ga.get
ทำงาน ระบบจะส่งคำขอไปยัง API การรายงานหลัก หากเกิดข้อผิดพลาด ระบบจะตรวจจับได้จากบล็อก try...catch
ที่กำหนดไว้ในเมธอด runDemo
ภายนอก หากคำขอสำเร็จ ระบบจะแสดงผลลัพธ์
แทรกข้อมูลในสเปรดชีต
ขั้นตอนสุดท้ายในสคริปต์คือแสดงผลลัพธ์จาก Core Reporting API ไปยัง Google ชีต เมธอด outputToSpreadsheet
จะใช้วิธีนี้ เพิ่มโค้ดต่อไปนี้ลงในโปรเจ็กต์
function outputToSpreadsheet(results) { var sheet = SpreadsheetApp.getActiveSpreadsheet().insertSheet(); // Print the headers. var headerNames = []; for (var i = 0, header; header = results.getColumnHeaders()[i]; ++i) { headerNames.push(header.getName()); } sheet.getRange(1, 1, 1, headerNames.length) .setValues([headerNames]); // Print the rows of data. sheet.getRange(2, 1, results.getRows().length, headerNames.length) .setValues(results.getRows()); }
ฟังก์ชันนี้จะแทรกแผ่นงานใหม่ลงในสเปรดชีตที่ใช้งานอยู่ก่อน จากนั้นจะแทรกส่วนหัวและข้อมูลการรายงานทั้งหมดลงในชีต ดูเคล็ดลับเพิ่มเติมเกี่ยวกับวิธีแทรกข้อมูลลงใน Google ชีตได้ที่หัวข้อ การเขียนข้อมูลจากออบเจ็กต์ JavaScript ไปยังสเปรดชีตใน บทแนะนำการจัดเก็บข้อมูลในสเปรดชีต
เรียกใช้สคริปต์
เมื่อเพิ่มโค้ดทั้งหมดในโปรเจ็กต์แล้ว ก็เรียกใช้ได้เลย
- ในแถบเครื่องมือของเครื่องมือแก้ไขสคริปต์ ให้เลือก
runDemo
ในเมนูเลือกฟังก์ชันแบบเลื่อนลง - จากนั้น คลิกปุ่ม
play
ครั้งแรกที่คุณเรียกใช้สคริปต์นี้ ช่องป๊อปอัปจะปรากฏขึ้น ซึ่งคุณจะต้องให้สิทธิ์สคริปต์นี้ในการเข้าถึงข้อมูลบัญชี Google Analytics
คลิกให้สิทธิ์
เมื่อคลิกแล้ว หน้าเว็บใหม่ที่โฮสต์บน google.com จะเปิดขึ้นและขอให้คุณอนุญาตให้สคริปต์นี้เข้าถึงข้อมูล เมื่อคลิก "อนุญาต" ระบบจะเปลี่ยนเส้นทางคุณไปยังหน้ายืนยัน ถึงตอนนี้สคริปต์ก็จะเข้าถึงข้อมูล Google Analytics และดำเนินการต่อไปได้
หลังจากสคริปต์ทำงานแล้ว ให้คลิกไปยังหน้าต่างที่มี Google ชีต คุณควรเห็นข้อมูลคีย์เวิร์ดทั้งหมดที่แสดงผลจาก API หรือกล่องข้อความที่มีข้อความแสดงข้อผิดพลาด
ทำให้สคริปต์ทำงานอัตโนมัติ
ณ จุดนี้ คุณควรมีสคริปต์ที่ค้นหา API ของ Google Analytics
ตอนนี้คุณอาจต้องกำหนดให้สคริปต์นี้ทำงานโดยอัตโนมัติเพื่อดึงข้อมูลใหม่ทุกคืน
Apps Script ช่วยให้การทำงานอัตโนมัติเป็นเรื่องง่ายโดยใช้ฟีเจอร์ triggers
หากต้องการให้สคริปต์นี้ทำงานโดยอัตโนมัติ ให้ทำตามขั้นตอนต่อไปนี้
- ในแถบเครื่องมือของเครื่องมือแก้ไขสคริปต์ ให้คลิก
Resources -> All your triggers...
- คลิก
Add a new trigger
กล่องโต้ตอบทริกเกอร์จะปรากฏขึ้น - กำหนดค่าทริกเกอร์เพื่อเรียกใช้เมธอด
runDemo
ทุกคืน- เมนูแบบเลื่อนลง
Run
ควรตั้งค่าเป็นrunDemo
- เมนูแบบเลื่อนลง
Events
ควรตั้งค่าเป็นTime-driven
,Day timer
และMidnight to 1am
- เมนูแบบเลื่อนลง
เมื่อกำหนดค่าแล้ว สคริปต์นี้จะทำงานทุกคืนเพื่อให้คุณได้รับข้อมูลสดใหม่ในตอนเช้า
หากมีข้อผิดพลาดเกิดขึ้นในเวลากลางคืน คุณจะได้รับการแจ้งเตือน นอกจากนี้ Apps Script ยังช่วยให้คุณส่งอีเมลแจ้งเตือนได้ด้วยหากเกิดข้อผิดพลาดขึ้น หากต้องการกำหนดค่านี้ ให้คลิกลิงก์ notifications
ในกล่องโต้ตอบของทริกเกอร์
กล่องโต้ตอบใหม่จะปรากฏขึ้นและให้คุณกำหนดค่าอีเมลที่ต้องการให้เกิดข้อผิดพลาด
บทสรุป
คุณได้ลงทะเบียนและให้สิทธิ์เข้าถึงสคริปต์เรียบร้อยแล้ว คุณได้ค้นหา Management API หลายครั้งเพื่อเรียกข้อมูลรหัสข้อมูลพร็อพเพอร์ตี้ (โปรไฟล์) จากนั้นใช้รหัสข้อมูลพร็อพเพอร์ตี้ (โปรไฟล์) เพื่อค้นหา Core Reporting API เพื่อดึงข้อมูลและแสดงผลใน Google ชีต
การใช้เทคนิคที่อธิบายไว้ในบทแนะนำจะช่วยให้คุณทำการวิเคราะห์ที่ซับซ้อนขึ้น รับข้อมูลเชิงลึกมากขึ้น สร้างแดชบอร์ดที่กำหนดเอง และลดเวลาในการเรียกใช้รายงานด้วยตนเองได้นาน
บทแนะนำดีๆ อีก 2-3 เรื่องที่อาจเป็นประโยชน์เพื่อช่วยให้คุณใช้ประโยชน์จาก Google Analytics API และ Google Apps Script ได้มากขึ้น ได้แก่
- การอ่านข้อมูลจากสเปรดชีต – คุณจึงระบุการค้นหา API ในสเปรดชีตแทนใน JavaScript ได้
- การแทรกแผนภูมิจากสเปรดชีตใน Google Sites – เพื่อให้คุณสร้างหน้าแดชบอร์ดใน Google Sites ได้ด้วยข้อมูล Analytics
- เมนูที่กำหนดเอง – เพื่อให้ผู้ใช้คนอื่นๆ ในบริษัทใช้สคริปต์ที่คุณเขียนได้โดยง่าย