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

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

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

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

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