यूज़र मैनेजमेंट

Google Analytics Management API से उपयोगकर्ता अनुमतियों का प्रोग्राम के हिसाब से मैनेजमेंट किया जा सकता है. यह खास तौर पर उन बड़ी कंपनियों के लिए फ़ायदेमंद है जो अपनी ऐक्सेस कंट्रोल सूचियों (एसीएल) में बार-बार अपडेट करती रहती हैं.

शुरुआती जानकारी

यहां तीन मुख्य संसाधन हैं, जिनका इस्तेमाल यह कंट्रोल करने के लिए किया जाता है कि किसी खाते, प्रॉपर्टी या व्यू (प्रोफ़ाइल) को कौन ऐक्सेस कर सकता है:

उपयोगकर्ता अनुमतियों में बदलाव करने से जुड़ी कार्रवाइयों के लिए, एक साथ कई अनुरोध भेजने की सुविधा भी उपलब्ध है.

उपयोगकर्ताओं की अनुमतियां

किसी Google खाते के उपयोगकर्ता को किसी Google Analytics खाते, प्रॉपर्टी या व्यू (प्रोफ़ाइल) का ऐक्सेस के इन लेवल का ऐक्सेस दिया जा सकता है:

  • MANAGE_USERS - उपयोगकर्ता अनुमतियां एपीआई को लिखने के अनुरोध करने के लिए ज़रूरी है.
  • EDIT - डेटा मैनेजमेंट संसाधनों में बदलाव करने के लिए ज़रूरी है.
  • COLLABORATE
  • READ_AND_ANALYZE

ऐक्सेस के हर लेवल के बारे में ज़्यादा जानकारी के लिए, उपयोगकर्ता की अनुमतियां सहायता केंद्र का लेख पढ़ें.

अनुमतियां असाइन की जा रही हैं

यह एपीआई दो तरह की अनुमतियां दिखाता है: local और effective. स्थानीय अनुमतियां दिए गए खाते, प्रॉपर्टी या व्यू (प्रोफ़ाइल) पर लागू होती हैं. एपीआई की मदद से अनुमतियां असाइन करते समय, आपको permissions.local प्रॉपर्टी का इस्तेमाल करना चाहिए. Effective की अनुमतियां, पैरंट रिसॉर्स से ली गई अनुमतियां दिखाती हैं.

अपने-आप मिलने वाली अनुमतियां

अगर किसी उपयोगकर्ता को किसी खाते के लिए EDIT अनुमति दी गई है, तो उस खाते की सभी प्रोफ़ाइल और प्रॉपर्टी पर यह अनुमतियां लागू हो जाएंगी. इसे permissions.effective प्रॉपर्टी के तौर पर दिखाया जाएगा.

इस्तेमाल के उदाहरण

मैनेजमेंट एपीआई में उपयोगकर्ता की अनुमतियों का इस्तेमाल, नीचे दिए गए मामलों को हल करने के लिए किया जा सकता है:

किसी खाते के सभी उपयोगकर्ताओं की सूची बनाना

जिन उपयोगकर्ताओं के पास खाते की किसी प्रॉपर्टी या व्यू (प्रोफ़ाइल) की अनुमति है उनके साथ-साथ किसी खाते के सभी उपयोगकर्ताओं की सूची बनाने के लिए, accountUserLinks संसाधन का list तरीका लागू करें.

बड़ी संख्या में उपयोगकर्ताओं को अपडेट करें

हमारा सुझाव है कि ज़्यादा उपयोगकर्ताओं के लिए अनुमतियां अपडेट करने के लिए, आप बैच का इस्तेमाल करें. इससे न सिर्फ़ कोटा बचेगा, बल्कि बेहतर परफ़ॉर्मेंस भी मिलेगी. पूरी जानकारी के लिए नीचे दिया गया बैच सेक्शन देखें. इसे किसी खाते के लिए लागू करने के लिए, यह तरीका अपनाएं:

  1. खाते के सभी उपयोगकर्ता लिंक पाएं:
    • list सभी accountUserLinks.
  2. हर उपयोगकर्ता के लिए, सही अनुमतियों वाले अपडेट के अनुरोध करें:
    • हर accountUserLink के लिए update.
  3. हर 300 उपयोगकर्ता के लिए एक बैच अनुरोध तैयार करें जिसमें ऊपर दिए गए अपडेट के अनुरोध शामिल हों:
    • हर 300 उपयोगकर्ताओं के लिए, batch को कॉल करें.

खाते की हैरारकी से किसी उपयोगकर्ता को मिटाना

खाते के क्रम (जैसे कि खाता, प्रॉपर्टी, और व्यू (प्रोफ़ाइल) से) से उपयोगकर्ता की सभी गतिविधियों को हटाने के लिए. इसके लिए, आपको ये काम करने होंगे:

  1. हर इकाई के लेवल के लिए सभी उपयोगकर्ता लिंक पाएं. खाते के लिए list के तीन अनुरोध पूरे करें:
    • list सभी accountUserLinks.
    • list सभी webpropertyUserLinks को webpropertyId पैरामीटर पर ~all पर सेट करके.
    • list सभी profileUserLinks को webpropertyId और profileId पैरामीटर को ~all पर सेट करके.
  2. स्थानीय अनुमतियों वाले उपयोगकर्ताओं को ढूंढें और मिटाएं. पहले चरण में, सूची की तीन कार्रवाइयों से मिले हर जवाब के लिए, हर entityUserLink की मदद से इसे दोहराएं:
    • अगर userRef प्रॉपर्टी, उपयोगकर्ता से मेल खाती हैं और local की अनुमतियां सेट की गई हैं, तो संसाधन पर delete एक्ज़ीक्यूट करें

खाते के उपयोगकर्ता लिंक, वेब प्रॉपर्टी के उपयोगकर्ता लिंक, और देखें (प्रोफ़ाइल) उपयोगकर्ता लिंक से जुड़े संसाधन देखने के delete तरीके के बारे में ज़्यादा जानने के लिए, एपीआई रेफ़रंस देखें.

किसी एक उपयोगकर्ता को अपडेट करना

मैनेजमेंट एपीआई का इस्तेमाल करके भी उपयोगकर्ता की अनुमतियों को अपडेट किया जा सकता है. उदाहरण के लिए, यह मानते हुए कि आपको व्यू (प्रोफ़ाइल) का नाम या आईडी नहीं पता है, उपयोगकर्ता की अनुमति के लेवल को READ_AND_ANALYZE से बदलकर EDIT करने का तरीका:

  1. हर इकाई के लेवल के लिए सभी उपयोगकर्ता लिंक पाएं खाते के लिए तीन list अनुरोध लागू करें:

    • list सभी accountUserLinks.
    • list सभी webpropertyUserLinks को webpropertyId पैरामीटर पर ~all पर सेट करके.
    • list सभी profileUserLinks को webpropertyId और profileId पैरामीटर को ~all पर सेट करके.
  2. स्थानीय अनुमतियों वाले उपयोगकर्ताओं को ढूंढें और अपडेट करें. चरण #1 में, सूची की तीन कार्रवाइयों से मिले हर जवाब के लिए, हर entityUserLink की मदद से इसे दोहराएं:

    • अगर userRef प्रॉपर्टी, उपयोगकर्ता से मेल खाती हैं और अगर उपयोगकर्ता के पास READ_AND_ANALYZE ऐक्सेस के साथ local अनुमतियां हैं, तो फिर संसाधन पर update एक्ज़ीक्यूट करें.

खाते के उपयोगकर्ता लिंक, वेब प्रॉपर्टी के उपयोगकर्ता लिंक, और देखें (प्रोफ़ाइल) उपयोगकर्ता लिंक से जुड़े संसाधन देखने के update तरीके के बारे में ज़्यादा जानने के लिए, एपीआई रेफ़रंस देखें.

एक उपयोगकर्ता जोड़ना

खाते की हैरारकी में किसी उपयोगकर्ता को जोड़ने के लिए, जैसे कि व्यू (प्रोफ़ाइल) में, यह तरीका अपनाएं:

  1. खाते, प्रॉपर्टी, और व्यू (प्रोफ़ाइल) के लिए आईडी फिर से पाने के लिए, Management API या वेब इंटरफ़ेस का इस्तेमाल करें.
  2. profileUserLinks संसाधन के insert तरीके को चलाकर उपयोगकर्ता जोड़ें.

बैचिंग

एपीआई से डेटा लिखने (मिटाने, डालने, अपडेट करने) की अनुमति के बैच करने वाले अनुरोधों को स्वीकार करने पर, परफ़ॉर्मेंस में बढ़ोतरी होती है और कोटा इंसेंटिव मिलता है.

  • उपयोगकर्ता की बैच की गई अनुमतियों के अनुरोध, बैक एंड ऑप्टिमाइज़ेशन का फ़ायदा ले सकते हैं. साथ ही, उनकी परफ़ॉर्मेंस में काफ़ी बढ़ोतरी हो सकती है.
  • बैच में भेजे गए उपयोगकर्ता की अनुमति वाले हर 30 एपीआई अनुरोधों को, सिर्फ़ एक ही कार्रवाई के तौर पर गिना जाता है.
  • एक बैच में अनुरोध में, ज़्यादा से ज़्यादा 300 उपयोगकर्ता अनुमतियों वाले एपीआई अनुरोध किए जा सकते हैं. इससे हर उपयोगकर्ता की सीमा ज़्यादा क्यूपीएस बनती है.

परफ़ॉर्मेंस में हुई इन बढ़ोतरी का ज़्यादा से ज़्यादा फ़ायदा पाने के लिए, आपको कुछ कार्रवाइयां करनी चाहिए.

  • एपीआई अनुरोध को उपयोगकर्ता के हिसाब से ग्रुप करें.
  • सिर्फ़ एक खाते के लिए कई अनुरोध एक साथ किए जा सकते हैं. एक से ज़्यादा Google Analytics खाते के साथ बैच की गई उपयोगकर्ता अनुमतियों के अनुरोध करने पर, आपको यह मैसेज दिखेगा: 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 का इस्तेमाल करने के तरीके की जांच करेंगे.