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 จะใช้เพื่อแก้ปัญหา Use Case ต่อไปนี้ได้
- แสดงรายชื่อผู้ใช้ทั้งหมดของบัญชี
- อัปเดตผู้ใช้จำนวนมาก
- ลบผู้ใช้ออกจากลำดับชั้นบัญชี
- อัปเดตผู้ใช้รายเดียว
- เพิ่มผู้ใช้รายเดียว
แสดงรายการผู้ใช้ทั้งหมดของบัญชี
หากต้องการแสดงผู้ใช้ทั้งหมดสำหรับบัญชี รวมถึงผู้ใช้ทั้งหมดที่มีสิทธิ์ในพร็อพเพอร์ตี้หรือข้อมูลพร็อพเพอร์ตี้ (โปรไฟล์) ใดๆ ในบัญชี ให้เรียกใช้เมธอด 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 หรือ Web Interface เพื่อเรียกข้อมูลรหัสสำหรับบัญชี พร็อพเพอร์ตี้ และข้อมูลพร็อพเพอร์ตี้ (โปรไฟล์)
- เพิ่มผู้ใช้โดยเรียกใช้เมธอด
insert
ของทรัพยากรprofileUserLinks
รวมกลุ่ม
ประสิทธิภาพเพิ่มขึ้นและสิ่งจูงใจให้โควต้าเมื่อกลุ่มสิทธิ์ API เขียน (ลบ แทรก อัปเดต) คำขอ
- คำขอสิทธิ์ของผู้ใช้แบบกลุ่มสามารถใช้ประโยชน์จากการเพิ่มประสิทธิภาพแบ็กเอนด์และเห็นประสิทธิภาพที่เพิ่มขึ้นอย่างมาก
- คำขอ 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'])
ขั้นตอนถัดไป
ต่อไปเราจะมาดูวิธีใช้ API การจัดการของ Google Analytics เพื่อกำหนดค่าทรัพยากรข้อมูลต่างๆ