การจัดการผู้ใช้

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

อัปเดตผู้ใช้จำนวนมาก

หากต้องการอัปเดตสิทธิ์สำหรับผู้ใช้จำนวนมาก เราขอแนะนำอย่างยิ่งให้คุณใช้การทำงานเป็นกลุ่ม ซึ่งไม่เพียงแต่จะช่วยประหยัดโควต้าเท่านั้น แต่ยังมีประสิทธิภาพมากขึ้นด้วย ดูรายละเอียดทั้งหมดได้ที่ส่วนการรวมกลุ่มด้านล่าง ขั้นตอนที่จำเป็นในการดำเนินการนี้สำหรับบัญชีมีดังนี้

  1. รับลิงก์ของผู้ใช้ทั้งหมดสำหรับบัญชี
    • list ทั้งหมด accountUserLinks
  2. สร้างคำขออัปเดตสำหรับผู้ใช้แต่ละรายที่มีสิทธิ์ที่เหมาะสม ดังนี้
    • update สําหรับทุก accountUserLink
  3. สร้างคำขอแบบกลุ่มเดียวสำหรับผู้ใช้ทุกๆ 300 รายที่มีคำขออัปเดตข้างต้น ดังนี้
    • โทรหา batch สำหรับผู้ใช้ทุกๆ 300 คน

ลบผู้ใช้ออกจากลำดับชั้นบัญชี

ในการนำรายการทั้งหมดของผู้ใช้ออกจากลำดับชั้นบัญชี (เช่น บัญชี พร็อพเพอร์ตี้ และข้อมูลพร็อพเพอร์ตี้ (โปรไฟล์)) ขั้นตอนที่จำเป็นในการดำเนินการนี้มีดังนี้

  1. รับลิงก์ของผู้ใช้ทั้งหมดสําหรับเอนทิตีแต่ละระดับ ดำเนินการตามคำขอ list 3 รายการสำหรับบัญชี
    • list ทั้งหมด accountUserLinks
    • list ทั้ง webpropertyUserLinks โดยตั้งค่าพารามิเตอร์ webpropertyId เป็น ~all
    • list ทั้ง profileUserLinks โดยตั้งค่าพารามิเตอร์ webpropertyId และ profileId เป็น ~all
  2. ค้นหาและลบผู้ใช้ที่มีสิทธิ์ในเครื่อง สำหรับแต่ละคำตอบที่ได้รับจากการดำเนินการรายการ 3 รายการในขั้นตอนที่ 1 ให้ทำซ้ำตาม entityUserLink แต่ละรายการดังนี้
    • หากพร็อพเพอร์ตี้ userRef ตรงกับผู้ใช้ และหากตั้งค่าสิทธิ์ local จากนั้นจะเรียกใช้ delete ในทรัพยากร

ดูรายละเอียดเกี่ยวกับวิธี delete ของลิงก์ผู้ใช้บัญชี ลิงก์ผู้ใช้ของผลิตภัณฑ์และบริการบนอินเทอร์เน็ต และแหล่งข้อมูลลิงก์ผู้ใช้ข้อมูลพร็อพเพอร์ตี้ (โปรไฟล์) ได้ที่ข้อมูลอ้างอิง API

อัปเดตผู้ใช้รายเดียว

นอกจากนี้ ยังสามารถอัปเดตสิทธิ์ของผู้ใช้ได้โดยใช้ Management API เช่น ขั้นตอนการเปลี่ยนระดับสิทธิ์ของผู้ใช้จาก READ_AND_ANALYZE เป็น EDIT ในกรณีที่ไม่ทราบชื่อหรือรหัสข้อมูลพร็อพเพอร์ตี้ (โปรไฟล์) มีดังนี้

  1. รับลิงก์ของผู้ใช้ทั้งหมดสําหรับเอนทิตีแต่ละระดับ ดําเนินการคําขอ list 3 รายการสําหรับบัญชี ดังนี้

    • list ทั้งหมด accountUserLinks
    • list ทั้ง webpropertyUserLinks โดยตั้งค่าพารามิเตอร์ webpropertyId เป็น ~all
    • list ทั้ง profileUserLinks โดยตั้งค่าพารามิเตอร์ webpropertyId และ profileId เป็น ~all
  2. ค้นหาและอัปเดตผู้ใช้ด้วยสิทธิ์ภายในเครื่อง สำหรับคำตอบแต่ละรายการที่ได้รับจากการดำเนินการรายการ 3 รายการในขั้นตอนที่ 1 ให้ทำซ้ำตาม entityUserLink แต่ละรายการดังนี้

    • หากพร็อพเพอร์ตี้ userRef ตรงกับผู้ใช้และหากผู้ใช้มีสิทธิ์ local ที่มีสิทธิ์เข้าถึง READ_AND_ANALYZE จากนั้นจะเรียกใช้ update ในทรัพยากร

ดูรายละเอียดเกี่ยวกับวิธี update ของลิงก์ผู้ใช้บัญชี ลิงก์ผู้ใช้ของผลิตภัณฑ์และบริการบนอินเทอร์เน็ต และแหล่งข้อมูลลิงก์ผู้ใช้ข้อมูลพร็อพเพอร์ตี้ (โปรไฟล์) ได้ที่ข้อมูลอ้างอิง API

เพิ่มผู้ใช้คนเดียว

หากต้องการเพิ่มผู้ใช้ในลำดับชั้นบัญชี เช่น ในข้อมูลพร็อพเพอร์ตี้ (โปรไฟล์) ให้ทำตามขั้นตอนต่อไปนี้

  1. ใช้ Management API หรือ Web Interface เพื่อเรียกข้อมูลรหัสสำหรับบัญชี พร็อพเพอร์ตี้ และข้อมูลพร็อพเพอร์ตี้ (โปรไฟล์)
  2. เพิ่มผู้ใช้โดยเรียกใช้เมธอด 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 เพื่อกำหนดค่าทรัพยากรข้อมูลต่างๆ