Google Analytics Management API की मदद से उपयोगकर्ता अनुमतियों का प्रोग्राम के हिसाब से मैनेजमेंट किया जा सकता है. यह खास तौर पर उन बड़ी कंपनियों के लिए फ़ायदेमंद है जो अपनी ऐक्सेस कंट्रोल सूचियों (एसीएल) में अक्सर अपडेट करती रहती हैं.
शुरुआती जानकारी
यहां तीन मुख्य संसाधन हैं, जिनका इस्तेमाल यह कंट्रोल करने के लिए किया जाता है कि किसी खाते, प्रॉपर्टी या व्यू (प्रोफ़ाइल) को कौन ऐक्सेस कर सकता है:
उपयोगकर्ता की अनुमतियों में बदलाव करने के लिए, खास बैचिंग सुविधा भी उपलब्ध है.
उपयोगकर्ताओं की अनुमतियां
Google खाते से आने वाले उपयोगकर्ता को Google Analytics खाते, प्रॉपर्टी या व्यू (प्रोफ़ाइल) का इन लेवल का ऐक्सेस दिया जा सकता है:
MANAGE_USERS
- उपयोगकर्ता अनुमति एपीआई में लिखने के अनुरोध करने के लिए ज़रूरी है.EDIT
- डेटा मैनेजमेंट संसाधनों में बदलाव करने के लिए ज़रूरी है.COLLABORATE
READ_AND_ANALYZE
ऐक्सेस के हर लेवल के बारे में ज़्यादा जानकारी पाने के लिए, सहायता केंद्र का उपयोगकर्ता की अनुमतियां लेख देखें.
अनुमतियां असाइन की जा रही हैं
यह एपीआई दो तरह की अनुमतियां दिखाता है: local
और effective
. स्थानीय अनुमतियां दिए गए खाते, प्रॉपर्टी या व्यू (प्रोफ़ाइल) पर लागू होती हैं. एपीआई के साथ अनुमतियां असाइन करते समय, आपको permissions.local
प्रॉपर्टी का इस्तेमाल करना चाहिए. Effective
की अनुमतियां, उन अनुमतियों के बारे में बताती हैं जो पैरंट संसाधनों से इनहेरिट की जाती हैं.
अपने-आप मिलने वाली अनुमतियां
अगर किसी उपयोगकर्ता को किसी खाते के लिए EDIT
अनुमति दी जाती है, तो उस खाते की सभी प्रोफ़ाइल और प्रॉपर्टी पर यह अनुमतियां लागू हो जाएंगी. इसे permissions.effective प्रॉपर्टी के ज़रिए दिखाया जाएगा.
इस्तेमाल के उदाहरण
मैनेजमेंट एपीआई में उपयोगकर्ता की अनुमतियों का इस्तेमाल, यहां दिए गए उदाहरणों को हल करने के लिए किया जा सकता है:
- किसी खाते के सभी उपयोगकर्ताओं की सूची बनाना
- ज़्यादा से ज़्यादा उपयोगकर्ताओं को अपडेट करना
- खाते की हैरारकी से किसी उपयोगकर्ता को मिटाना
- किसी एक उपयोगकर्ता को अपडेट करना
- एक उपयोगकर्ता जोड़ना
किसी खाते के सभी उपयोगकर्ताओं की सूची बनाना
जिन उपयोगकर्ताओं के पास खाते की किसी प्रॉपर्टी या व्यू (प्रोफ़ाइल) की अनुमति है उन्हें और किसी खाते के सभी उपयोगकर्ताओं की सूची बनाने के लिए, accountUserLinks संसाधन का list
तरीका लागू करें.
बड़ी संख्या में उपयोगकर्ताओं को अपडेट करना
ज़्यादा उपयोगकर्ताओं के लिए अनुमतियां अपडेट करने के लिए हमारा सुझाव है कि आप बैच बनाने की सुविधा का इस्तेमाल करें. इससे न सिर्फ़ कोटा बचेगा, बल्कि यह ज़्यादा बेहतर तरीके से परफ़ॉर्म करने वाला भी होगा -- पूरी जानकारी के लिए नीचे दिया गया बैचिंग सेक्शन देखें. इस सुविधा को खाते में पूरा करने के लिए, इन चरणों को पूरा करना ज़रूरी है:
- खाते के सभी उपयोगकर्ताओं के लिंक पाएं:
list
सभीaccountUserLinks
.
- हर उपयोगकर्ता के लिए, सही अनुमतियों के साथ अपडेट करने के अनुरोध करें:
- हर
accountUserLink
के लिएupdate
.
- हर
- हर 300 उपयोगकर्ताओं के लिए एक बैच में अनुरोध करें, जिसमें ऊपर दिए गए अपडेट के अनुरोध शामिल हों:
- हर 300 उपयोगकर्ताओं के लिए,
batch
को कॉल करें.
- हर 300 उपयोगकर्ताओं के लिए,
खाते की हैरारकी से किसी उपयोगकर्ता को मिटाना
खाते के क्रम (जैसे कि खाता, प्रॉपर्टी, और व्यू (प्रोफ़ाइल) से) से किसी उपयोगकर्ता को हटाने के लिए. ऐसा करने के लिए, इन चरणों को पूरा करना ज़रूरी है:
- हर इकाई लेवल के लिए सभी उपयोगकर्ता लिंक पाएं. इस खाते के लिए,
list
के तीन अनुरोध पूरे करें: - स्थानीय अनुमतियों वाले उपयोगकर्ताओं को ढूंढें और मिटाएं. पहले चरण में सूचियों की तीन कार्रवाइयों से मिले हर जवाब के लिए, हर
entityUserLink
को दोहराएं:- अगर
userRef
प्रॉपर्टी उपयोगकर्ता से मेल खाती हैं औरlocal
की अनुमतियां सेट की गई हैं, तो संसाधन परdelete
एक्ज़ीक्यूट करें
- अगर
खाते के उपयोगकर्ता लिंक, वेब प्रॉपर्टी के उपयोगकर्ता लिंक, और व्यू (प्रोफ़ाइल) उपयोगकर्ता लिंक के लिए उपलब्ध संसाधनों के delete
तरीके के बारे में ज़्यादा जानने के लिए, एपीआई रेफ़रंस देखें.
किसी एक उपयोगकर्ता को अपडेट करना
मैनेजमेंट एपीआई का इस्तेमाल करके भी उपयोगकर्ता की अनुमतियों को अपडेट किया जा सकता है. उदाहरण के लिए, यह मानते हुए कि आपको व्यू (प्रोफ़ाइल) का नाम या आईडी नहीं पता है, उपयोगकर्ता की अनुमति के लेवल को READ_AND_ANALYZE
से बदलकर EDIT
करने का तरीका:
हर इकाई लेवल के लिए सभी उपयोगकर्ता लिंक पाएं खाते के लिए तीन
list
अनुरोध लागू करें:स्थानीय अनुमतियों वाले उपयोगकर्ताओं को ढूंढें और अपडेट करें. चरण #1 में, सूची की तीन कार्रवाइयों से मिले हर जवाब के लिए, हर
entityUserLink
को दोहराएं:- अगर
userRef
प्रॉपर्टी, उपयोगकर्ता से मेल खाती है और उपयोगकर्ता के पासREAD_AND_ANALYZE
ऐक्सेस के साथlocal
अनुमतियां हैं, तो संसाधन परupdate
चलाएं.
- अगर
खाते के उपयोगकर्ता लिंक, वेब प्रॉपर्टी के उपयोगकर्ता लिंक, और व्यू (प्रोफ़ाइल) उपयोगकर्ता लिंक के लिए उपलब्ध संसाधनों के update
तरीके के बारे में ज़्यादा जानने के लिए, एपीआई रेफ़रंस देखें.
किसी एक उपयोगकर्ता को जोड़ना
खाते की हैरारकी में किसी उपयोगकर्ता को जोड़ने के लिए, यह तरीका अपनाएं:
- खाते, प्रॉपर्टी और व्यू (प्रोफ़ाइल) के आईडी को फिर से पाने के लिए, मैनेजमेंट एपीआई या वेब इंटरफ़ेस का इस्तेमाल करें.
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 का इस्तेमाल करने के तरीके की जांच करेंगे.