Google Analytics Management API ช่วยให้จัดการสิทธิ์ของผู้ใช้แบบเป็นโปรแกรมได้ ซึ่งมีประโยชน์อย่างยิ่งสำหรับบริษัทขนาดใหญ่ที่มีการอัปเดตรายการควบคุมการเข้าถึง (ACL) เป็นประจำ
เกริ่นนำ
มีทรัพยากรหลัก 3 รายการที่ใช้ในการควบคุมผู้ที่มีสิทธิ์เข้าถึงบัญชี พร็อพเพอร์ตี้ หรือข้อมูลพร็อพเพอร์ตี้ (โปรไฟล์) ดังนี้
นอกจากนี้ยังมีการสนับสนุนแบบกลุ่มพิเศษสำหรับการดำเนินการเขียนสิทธิ์ของผู้ใช้
การอนุญาตผู้ใช้
ผู้ใช้ที่นำเสนอโดยบัญชี Google จะได้รับสิทธิ์การเข้าถึงบัญชี พร็อพเพอร์ตี้ หรือข้อมูลพร็อพเพอร์ตี้ (โปรไฟล์) ใน Google Analytics ในระดับต่อไปนี้
MANAGE_USERS
- ต้องใช้เพื่อส่งคำขอการเขียนไปยัง API สิทธิ์ของผู้ใช้EDIT
- ต้องใช้เพื่อแก้ไขทรัพยากรการจัดการข้อมูลCOLLABORATE
READ_AND_ANALYZE
โปรดดูรายละเอียดเพิ่มเติมเกี่ยวกับสิทธิ์เข้าถึงแต่ละระดับในบทความสิทธิ์ของผู้ใช้ในศูนย์ช่วยเหลือ
การกำหนดสิทธิ์
API แสดงสิทธิ์ 2 ประเภท ได้แก่ local
และ effective
สิทธิ์ภายในจะมีผลกับบัญชี พร็อพเพอร์ตี้ หรือข้อมูลพร็อพเพอร์ตี้ (โปรไฟล์) ที่ระบุ เมื่อกำหนดสิทธิ์ด้วย API คุณควรใช้พร็อพเพอร์ตี้ permissions.local
สิทธิ์ Effective
รายการแสดงถึงสิทธิ์ที่รับช่วงมาจากทรัพยากรระดับบนสุด
สิทธิ์ที่รับช่วงมา
หากผู้ใช้ได้รับสิทธิ์ EDIT
ในบัญชี โปรไฟล์และพร็อพเพอร์ตี้ทั้งหมดภายใต้บัญชีนั้นจะได้รับสิทธิ์นี้ ซึ่งพร็อพเพอร์ตี้permissions.effective จะแสดงแทน
Use Case
สิทธิ์ผู้ใช้ใน Management API สามารถใช้เพื่อแก้ไขกรณีการใช้งานต่อไปนี้
- แสดงรายชื่อผู้ใช้ทั้งหมดของบัญชี
- อัปเดตผู้ใช้จำนวนมาก
- ลบผู้ใช้ออกจากลำดับชั้นบัญชี
- อัปเดตผู้ใช้รายเดียว
- เพิ่มผู้ใช้รายเดียว
แสดงรายการผู้ใช้ทั้งหมดของบัญชี
หากต้องการแสดงรายการผู้ใช้ทั้งหมดของบัญชี ซึ่งรวมถึงผู้ใช้ทั้งหมดที่มีสิทธิ์ในพร็อพเพอร์ตี้หรือข้อมูลพร็อพเพอร์ตี้ (โปรไฟล์) ใดๆ ในบัญชี ให้ใช้เมธอด list
ของทรัพยากร accountUserLinks
อัปเดตจำนวนผู้ใช้จำนวนมาก
หากต้องการอัปเดตสิทธิ์สำหรับผู้ใช้จำนวนมาก เราขอแนะนำอย่างยิ่งให้ใช้การทำงานแบบกลุ่ม ซึ่งนอกจากจะช่วยประหยัดโควต้าแล้ว ยังมีประสิทธิภาพสูงขึ้นอีกมาก ดูรายละเอียดทั้งหมดได้ที่ส่วนการจัดกลุ่มด้านล่าง ขั้นตอนที่จำเป็นในการดำเนินการนี้สำหรับบัญชีมีดังนี้
- รับลิงก์ผู้ใช้ทั้งหมดสำหรับบัญชี
list
ทั้งหมดaccountUserLinks
- สร้างคำขออัปเดตสำหรับผู้ใช้แต่ละรายด้วยสิทธิ์ที่เหมาะสม ดังนี้
update
สําหรับทุกaccountUserLink
- สร้างคำขอแบบกลุ่มเดียวสำหรับผู้ใช้ทุกๆ 300 รายที่มีคำขออัปเดตข้างต้น ดังนี้
- โทรหา
batch
สำหรับผู้ใช้ทุกๆ 300 คน
- โทรหา
ลบผู้ใช้ออกจากลำดับชั้นบัญชี
ในการนำรายการทั้งหมดของผู้ใช้ออกจากลำดับชั้นบัญชี (เช่น บัญชี พร็อพเพอร์ตี้ และข้อมูลพร็อพเพอร์ตี้ (โปรไฟล์)) ขั้นตอนที่จำเป็นในการดำเนินการนี้มีดังนี้
- รับลิงก์ทั้งหมดสำหรับผู้ใช้สำหรับแต่ละระดับเอนทิตี ดำเนินการคำขอ
list
3 รายการสำหรับบัญชี - ค้นหาและลบผู้ใช้ที่มีสิทธิ์ในเครื่อง สําหรับคําตอบแต่ละรายการที่ได้รับจากการดําเนินการของลิสต์ 3 รายการในขั้นตอนที่ 1 ให้ทําซ้ำผ่าน
entityUserLink
แต่ละรายการดังนี้- หากพร็อพเพอร์ตี้
userRef
ตรงกับผู้ใช้และหากตั้งค่าสิทธิ์local
จากนั้นจะเรียกใช้delete
ในทรัพยากร
- หากพร็อพเพอร์ตี้
ดูรายละเอียดเกี่ยวกับวิธี delete
ของลิงก์ผู้ใช้บัญชี ลิงก์ผู้ใช้ผลิตภัณฑ์และบริการบนอินเทอร์เน็ต และแหล่งข้อมูลเกี่ยวกับลิงก์ผู้ใช้ของดู (โปรไฟล์) ได้ที่ข้อมูลอ้างอิง API
อัปเดตผู้ใช้รายเดียว
นอกจากนี้ยังอัปเดตสิทธิ์ของผู้ใช้โดยใช้ Management API ได้ด้วย เช่น ขั้นตอนการเปลี่ยนระดับสิทธิ์ของผู้ใช้จาก READ_AND_ANALYZE
เป็น EDIT
ในกรณีที่ไม่ทราบชื่อหรือรหัสพร็อพเพอร์ตี้ (โปรไฟล์) มีดังนี้
รับลิงก์ของผู้ใช้ทั้งหมดสําหรับเอนทิตีแต่ละระดับ ดําเนินการคําขอ
list
3 รายการสําหรับบัญชี ดังนี้ค้นหาและอัปเดตผู้ใช้ด้วยสิทธิ์ในพื้นที่ สําหรับคําตอบแต่ละรายการที่ได้รับจากการดําเนินการของลิสต์ 3 รายการในขั้นตอนที่ 1 ให้ทําซ้ำผ่าน
entityUserLink
แต่ละรายการดังนี้- หากพร็อพเพอร์ตี้
userRef
ตรงกับผู้ใช้และหากผู้ใช้มีสิทธิ์local
ที่มีสิทธิ์READ_AND_ANALYZE
จากนั้นจะเรียกใช้update
ในทรัพยากร
- หากพร็อพเพอร์ตี้
ดูรายละเอียดเกี่ยวกับวิธี update
ของลิงก์ผู้ใช้บัญชี ลิงก์ผู้ใช้ผลิตภัณฑ์และบริการบนอินเทอร์เน็ต และแหล่งข้อมูลเกี่ยวกับลิงก์ผู้ใช้ของดู (โปรไฟล์) ได้ที่ข้อมูลอ้างอิง API
เพิ่มผู้ใช้รายเดียว
หากต้องการเพิ่มผู้ใช้ลงในลำดับชั้นบัญชี เช่น ในข้อมูลพร็อพเพอร์ตี้ (โปรไฟล์) ให้ทำตามขั้นตอนต่อไปนี้
- ใช้ Management API หรือเว็บอินเทอร์เฟซเพื่อเรียกข้อมูลรหัสสำหรับบัญชี พร็อพเพอร์ตี้ และข้อมูลพร็อพเพอร์ตี้ (โปรไฟล์)
- เพิ่มผู้ใช้โดยเรียกใช้เมธอด
insert
ของทรัพยากรprofileUserLinks
รวมกลุ่ม
ประสิทธิภาพที่เพิ่มขึ้นและสิ่งจูงใจด้านโควต้าเมื่อรวมคำขอสิทธิ์การเขียน (ลบ แทรก และอัปเดต) ในกลุ่ม
- คำขอสิทธิ์ของผู้ใช้แบบกลุ่มจะใช้ประโยชน์จากการเพิ่มประสิทธิภาพแบ็กเอนด์ และเห็นประสิทธิภาพที่เพิ่มขึ้นอย่างมาก
- คำขอ API สิทธิ์ผู้ใช้เป็นกลุ่มทุกๆ 30 รายการจะนับเป็นการดำเนินการเขียนครั้งเดียวเท่านั้น
- โดยสามารถส่งคำขอ API สิทธิ์ของผู้ใช้ได้สูงสุด 300 รายการในคำขอกลุ่มเดียว ทำให้มี QPS ต่อผู้ใช้สูงขึ้น
เพื่อให้ได้รับประโยชน์สูงสุดจากประสิทธิภาพที่ได้รับเหล่านี้ มีสิ่งที่คุณควรทำ
- จัดกลุ่มคำขอ API ตามผู้ใช้
- คําขอแบบกลุ่มสําหรับบัญชีเดียวเท่านั้น คำขอสิทธิ์ของผู้ใช้เป็นกลุ่มที่มีบัญชี Google Analytics มากกว่า 1 บัญชีจะแสดงข้อผิดพลาดโดยมีข้อความระบุว่า
All batched requests must be under the same account
การจัดการข้อผิดพลาด
การเรียกสิทธิ์ทั้งหมดในคำขอแบบกลุ่มจะถือเป็นธุรกรรมเดียว ซึ่งหมายความว่าหากการเปลี่ยนแปลงใดก็ตามมีข้อผิดพลาด ก็จะไม่มีการเปลี่ยนแปลงใดๆ เหตุผลที่เราดำเนินการเป็นการเรียกครั้งเดียวมีดังนี้
- คุณอาจต้องแก้ไขหลายรายการเพื่อปรับสิทธิ์ของผู้ใช้รายเดียว หากการแก้ไขรายการใดรายการหนึ่งผิดรูปแบบ การดำเนินการเพียงบางส่วนของกลุ่มอาจทำให้สิทธิ์ของผู้ใช้ตกอยู่ในสถานะที่ไม่พึงประสงค์
- การแก้ไขเป็นเหมือนธุรกรรมเดียว เราจึงเพิ่มประสิทธิภาพการเข้าชมและลดโควต้าที่จําเป็นสําหรับการโทรได้
ตัวอย่างการแบบกลุ่ม - Python
ด้านล่างนี้เป็นตัวอย่างง่ายๆ ใน Python เกี่ยวกับวิธีจัดกลุ่มคำขอเพื่อเพิ่มรายชื่อผู้ใช้ลงในชุดข้อมูลพร็อพเพอร์ตี้ (โปรไฟล์) ตัวอย่างนี้จะวนซ้ำในบัญชีของผู้ใช้ที่ได้รับอนุญาต และสำหรับแต่ละบัญชีจะสร้างคำขอแบบกลุ่มรายการเดียว ภายในแต่ละกลุ่มจะขอจัดกลุ่มการเปลี่ยนแปลงทั้งหมดสำหรับผู้ใช้รายหนึ่งๆ
"""A simple example of Google Analytics batched user permissions.""" import json from googleapiclient.errors import HttpError from googleapiclient.http import BatchHttpRequest def call_back(request_id, response, exception): """Handle batched request responses.""" print request_id if exception is not None: if isinstance(exception, HttpError): message = json.loads(exception.content)['error']['message'] print ('Request %s returned API error : %s : %s ' % (request_id, exception.resp.status, message)) else: print response def add_users(users, permissions): """Adds users to every view (profile) with the given permissions. Args: users: A list of user email addresses. permissions: A list of user permissions. Note: this code assumes you have MANAGE_USERS level permissions to each profile and an authorized Google Analytics service object. """ # Get the a full set of account summaries. account_summaries = analytics.management().accountSummaries().list().execute() # Loop through each account. for account in account_summaries.get('items', []): account_id = account.get('id') # Loop through each user. for user in users: # Create the BatchHttpRequest object. batch = BatchHttpRequest(callback=call_back) # Loop through each property. for property_summary in account.get('webProperties', []): property_id = property_summary.get('id') # Loop through each view (profile). for view in property_summary.get('profiles', []): view_id = view.get('id') # Construct the Profile User Link. link = analytics.management().profileUserLinks().insert( accountId=account_id, webPropertyId=property_id, profileId=view_id, body={ 'permissions': { 'local': permissions }, 'userRef': { 'email': user } } ) batch.add(link) # Execute the batch request for each user. batch.execute() if __name__ == '__main__': # Construct a list of users. emails = ['ona@gmail.com', 'emi@gmail.com', 'sue@gmail.com', 'liz@gmail.com'] # call the add_users function with the list of desired permissions. add_users(emails, ['READ_AND_ANALYZE'])
ขั้นตอนถัดไป
ต่อไปเราจะมาดูวิธีใช้ Google Analytics Management API เพื่อกำหนดค่าทรัพยากรต่างๆ