Python गाइड

अहम जानकारी: यह दस्तावेज़ 2012 से पहले लिखा गया था. पुष्टि के विकल्प इस दस्तावेज़ में दिए गए (OAuth 1.0, AuthSub, और ClientLogin) आधिकारिक तौर पर बंद कर दी गई है 20 अप्रैल, 2012 से है और अब उपलब्ध नहीं है. हम आपको यहां माइग्रेट करने के लिए प्रोत्साहित करते हैं: OAuth 2.0 को जल्द से जल्द मंज़ूरी दें.

Google Sites Data API का इस्तेमाल करके, क्लाइंट ऐप्लिकेशन किसी Google साइट में मौजूद कॉन्टेंट को ऐक्सेस कर सकते हैं, उसे पब्लिश कर सकते हैं, और उसमें बदलाव कर सकते हैं. आपका क्लाइंट ऐप्लिकेशन भी हाल की गतिविधियों की सूची का अनुरोध कर सकता है, संशोधन इतिहास फ़ेच कर सकता है, और अटैचमेंट डाउनलोड कर सकता है.

Sites Data API की सुविधाओं के बारे में कुछ जानकारी देने के साथ-साथ, इस गाइड में एपीआई के साथ इंटरैक्ट करने के उदाहरण भी दिए गए हैं Python क्लाइंट लाइब्रेरी का इस्तेमाल करके. क्लाइंट लाइब्रेरी सेट अप करने में मदद पाने के लिए, यहां देखें Google Data Python क्लाइंट लाइब्रेरी का इस्तेमाल शुरू करना. अगर आपको यह जानना है कि क्लासिक Sites API के साथ इंटरैक्ट करने के लिए, Python क्लाइंट लाइब्रेरी में जिस प्रोटोकॉल का इस्तेमाल किया जाता है उसके बारे में ज़्यादा जानने के लिए, कृपया यहां देखें प्रोटोकॉल गाइड.

दर्शक

यह दस्तावेज़ उन डेवलपर के लिए है जो Google Sites के साथ इंटरैक्ट करने वाले क्लाइंट ऐप्लिकेशन लिखना चाहते हैं Google डेटा Python क्लाइंट लाइब्रेरी का इस्तेमाल करके.

शुरू करना

Python क्लाइंट लाइब्रेरी का इस्तेमाल करने के लिए, आपको Python 2.2+ और DependencyModules विकी पेज पर दिए गए मॉड्यूल की ज़रूरत होती है. क्लाइंट लाइब्रेरी डाउनलोड करने के बाद, क्लाइंट को इंस्टॉल करने और उसका इस्तेमाल करने में मदद पाने के लिए, Google Data Python लाइब्रेरी का इस्तेमाल शुरू करना लेख देखें.

सैंपल चलाना

प्रोजेक्ट की Mercurial रिपॉज़िटरी की samples/sites सबडायरेक्ट्री में, काम कर रहा एक पूरा सैंपल मौजूद है (/samples/sites/sites_example.py).

उदाहरण को इस तरह चलाएं:

python sites_example.py
# or
python sites_example.py --site [sitename] --domain [domain or "site"] --debug [prints debug info if set]

अगर ज़रूरी फ़्लैग नहीं दिए गए हैं, तो ऐप्लिकेशन से आपको वे वैल्यू डालने के लिए कहा जाएगा. इस नमूने से उपयोगकर्ता कई काम कर सकता है, जिनमें क्लासिक Sites API को इस्तेमाल करने का तरीका बताया गया है. इसलिए, कुछ खास काम करने के लिए आपको पुष्टि करनी होगी. जैसे, कॉन्टेंट में बदलाव करना. इस प्रोग्राम में शामिल होने के लिए साथ ही, आपको AuthSub, OAuth, या ClientLogin.

इस गाइड में दिए गए उदाहरणों को अपने कोड में शामिल करने के लिए, आपको इन import स्टेटमेंट की ज़रूरत होगी:

import atom.data
import gdata.sites.client
import gdata.sites.data

आपको SitesClient ऑब्जेक्ट भी सेटअप करना होगा. यह ऑब्जेक्ट, क्लासिक Sites API का क्लाइंट कनेक्शन दिखाता है. अपने ऐप्लिकेशन के नाम और साइट के वेबस्पेस नाम को पास करें (इसके यूआरएल से):

client = gdata.sites.client.SitesClient(source='yourCo-yourAppName-v1', site='yourSiteName')

G Suite डोमेन पर होस्ट की गई किसी साइट के साथ काम करने के लिए, domain पैरामीटर का इस्तेमाल करके डोमेन सेट करें:

client = gdata.sites.client.SitesClient(source='yourCo-yourAppName-v1', site='yourSiteName', domain='example.com')

ऊपर दिए गए स्निपेट में, source आर्ग्युमेंट ज़रूरी नहीं है. हालांकि, हमारा सुझाव है कि लॉग करने के लिए इसका इस्तेमाल करें. इसे ऐसा होना चाहिए यह फ़ॉर्मैट अपनाएं: company-applicationname-version

ध्यान दें: बाकी गाइड यह मानती है कि आपने वैरिएबल client में SitesClient ऑब्जेक्ट बनाया है.

क्लासिक Sites API में पुष्टि की जा रही है

Python क्लाइंट लाइब्रेरी का इस्तेमाल, सार्वजनिक या निजी फ़ीड के साथ काम करने के लिए किया जा सकता है. साइट डेटा एपीआई निजी और सार्वजनिक ऐक्सेस देता है फ़ीड, जो साइट की अनुमतियों और उस कार्रवाई के आधार पर होते हैं जिसे करने की कोशिश की जा रही है. उदाहरण के लिए, आप हमारे लेखों का कॉन्टेंट फ़ीड पढ़ सकते हैं एक सार्वजनिक साइट है, लेकिन उसमें अपडेट नहीं किया जाता - कुछ ऐसा जिसके लिए एक प्रमाणित क्लाइंट की आवश्यकता होती है. ऐसा इनके ज़रिए किया जा सकता है: ClientLogin उपयोगकर्ता नाम/पासवर्ड की पुष्टि करना, AuthSub या OAuth.

AuthSub, OAuth, और ClientLogin पर ज़्यादा जानकारी के लिए, कृपया Google Data API की पुष्टि से जुड़ी खास जानकारी देखें.

वेब ऐप्लिकेशन के लिए AuthSub

वेब ऐप्लिकेशन के लिए AuthSub की पुष्टि का इस्तेमाल ऐसे क्लाइंट ऐप्लिकेशन के ज़रिए किया जाना चाहिए जिन्हें की पुष्टि करने के लिए अपने उपयोगकर्ताओं की Google या G Suite खातों की पुष्टि कर सकते हैं. ऑपरेटर को Google Sites के उपयोगकर्ता के उपयोगकर्ता नाम और पासवर्ड के ऐक्सेस की ज़रूरत नहीं होती है - सिर्फ़ AuthSub टोकन ज़रूरी है.

अपने वेब ऐप्लिकेशन में AuthSub शामिल करने के निर्देश देखें

सिर्फ़ एक बार इस्तेमाल होने वाले टोकन के लिए अनुरोध करें

जब उपयोगकर्ता पहली बार आपके ऐप्लिकेशन पर आता है, तो उसे अपनी पहचान की पुष्टि करनी होगी. आम तौर पर, डेवलपर उपयोगकर्ता को निर्देश देने के लिए कुछ टेक्स्ट और लिंक प्रिंट करते हैं AuthSub के मंज़ूरी पेज पर जाएं. Google डेटा Python क्लाइंट लाइब्रेरी में एक फ़ंक्शन दिया जाता है, यह यूआरएल जनरेट करने के लिए generate_auth_sub_url(). नीचे दिया गया कोड AuthSubRequest पेज का लिंक सेट अप करता है.

import gdata.gauth

def GetAuthSubUrl():
  next = 'http://www.example.com/myapp.py'
  scopes = ['https://sites.google.com/feeds/']
  secure = True
  session = True
  return gdata.gauth.generate_auth_sub_url(next, scopes, secure=secure, session=session)

print '<a href="%s">Login to your Google account</a>' % GetAuthSubUrl()

अगर आपको G Suite होस्ट किए गए डोमेन पर उपयोगकर्ताओं की पुष्टि करनी है, तो वह डोमेन नेम generate_auth_sub_url() को दें:

def GetAuthSubUrl():
  domain = 'example.com'
  next = 'http://www.example.com/myapp.py'
  scopes = ['https://sites.google.com/feeds/']
  secure = True
  session = True
  return gdata.gauth.generate_auth_sub_url(next, scopes, secure=secure, session=session, domain=domain)

generate_auth_sub_url() वाला तरीका कई पैरामीटर लेता है. ये पैरामीटर, उन क्वेरी पैरामीटर के हिसाब से होते हैं जिनका इस्तेमाल AuthSubRequest हैंडलर):

  • अगला यूआरएल — वह यूआरएल जिस पर Google रीडायरेक्ट करेगा उपयोगकर्ता के अपने खाते में लॉग इन करने और ऐक्सेस देने के बाद; ऊपर दिए गए उदाहरण में http://www.example.com/myapp.py
  • दायराhttps://sites.google.com/feeds/
  • सुरक्षित, एक बूलियन है. इससे पता चलता है कि टोकन का इस्तेमाल सुरक्षित और रजिस्टर किए गए मोड में किया जाएगा या नहीं; ऊपर दिए गए उदाहरण में True
  • session, यह बताने वाला एक दूसरा बूलियन है कि एक बार इस्तेमाल होने वाले टोकन को बाद में किसी सेशन टोकन में बदला जाएगा या नहीं; ऊपर दिए गए उदाहरण में True

सेशन टोकन पर अपग्रेड करना

Google Data API क्लाइंट लाइब्रेरी के साथ AuthSub का इस्तेमाल करना देखें.

सेशन टोकन के बारे में जानकारी पाना

Google Data API क्लाइंट लाइब्रेरी के साथ AuthSub का इस्तेमाल करना देखें.

सेशन टोकन को रद्द करना

Google Data API क्लाइंट लाइब्रेरी के साथ AuthSub का इस्तेमाल करना देखें.

सलाह: जब आपके ऐप्लिकेशन को लंबे समय तक चलने वाले सेशन का टोकन मिल जाए, उस टोकन को बाद में इस्तेमाल करने के लिए अपने डेटाबेस में सेव कर सकते हैं. अपने ऐप्लिकेशन को हर बार चलाए जाने पर उपयोगकर्ता को AuthSub पर वापस भेजने की कोई आवश्यकता नहीं है. क्लाइंट पर कोई मौजूदा टोकन सेट करने के लिए client.auth_token = gdata.gauth.AuthSubToken(TOKEN_STR) का इस्तेमाल करें.

वेब या इंस्टॉल किए गए/मोबाइल ऐप्लिकेशन के लिए OAuth

OAuth का इस्तेमाल, AuthSub के विकल्प के तौर पर किया जा सकता है और यह वेब ऐप्लिकेशन के लिए है. OAuth का इस्तेमाल करना, AuthSub के सुरक्षित और रजिस्टर किए गए मोड का इस्तेमाल करने जैसा है डेटा के सभी अनुरोध डिजिटल रूप से साइन किए जाने चाहिए. साथ ही, आपको अपना डोमेन रजिस्टर करना होगा.

इंस्टॉल किए गए अपने ऐप्लिकेशन में OAuth लागू करने के निर्देश देखें

अनुरोध टोकन फ़ेच किया जा रहा है

Google Data API क्लाइंट लाइब्रेरी के साथ OAuth का इस्तेमाल करना लेख पढ़ें.

अनुरोध टोकन की अनुमति देना

Google Data API क्लाइंट लाइब्रेरी के साथ OAuth का इस्तेमाल करना लेख पढ़ें.

ऐक्सेस टोकन पर अपग्रेड करना

Google Data API क्लाइंट लाइब्रेरी के साथ OAuth का इस्तेमाल करना लेख पढ़ें.

अहम जानकारी: जब आपके ऐप्लिकेशन को OAuth ऐक्सेस टोकन मिल जाए, उस टोकन को बाद में इस्तेमाल करने के लिए अपने डेटाबेस में सेव कर सकते हैं. ऐप्लिकेशन को हर बार चलाए जाने पर, उपयोगकर्ता को OAuth के ज़रिए वापस भेजने की ज़रूरत नहीं है. क्लाइंट पर कोई मौजूदा टोकन सेट करने के लिए client.auth_token = gdata.oauth.OAuthToken(TOKEN_STR, TOKEN_SECRET) का इस्तेमाल करें.

इंस्टॉल किए गए/मोबाइल ऐप्लिकेशन के लिए ClientLogin

ClientLogin का इस्तेमाल, इंस्टॉल किए गए या ऐसे मोबाइल ऐप्लिकेशन में किया जाना चाहिए जिन्हें की पुष्टि करने के लिए कहा जा सकता है. पहली बार चलाने पर, आपका ऐप्लिकेशन उपयोगकर्ता को उसका उपयोगकर्ता नाम/पासवर्ड डालने का अनुरोध करता है. बाद के अनुरोधों पर, पुष्टि करने वाले टोकन का रेफ़रंस दिया गया है.

इंस्टॉल किए गए अपने ऐप्लिकेशन में ClientLogin शामिल करने के निर्देश देखें

ClientLogin का इस्तेमाल करने के लिए, ClientLogin() SitesClient ऑब्जेक्ट का तरीका, जो इससे इनहेरिट किया गया है GDClient. ईमेल पता दर्ज करें और उस उपयोगकर्ता का पासवर्ड डालें जिसकी ओर से आपका क्लाइंट अनुरोध कर रहा है. उदाहरण के लिए:

client = gdata.sites.client.SitesClient(source='yourCo-yourAppName-v1')
client.ClientLogin('user@gmail.com', 'pa$$word', client.source);

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

अपने Python ऐप्लिकेशन में ClientLogin का इस्तेमाल करने के बारे में ज़्यादा जानकारी के लिए, Google Data API क्लाइंट लाइब्रेरी के साथ ClientLogin का इस्तेमाल करना लेख देखें.

वापस सबसे ऊपर जाएं

साइट फ़ीड

साइट फ़ीड का इस्तेमाल, उन Google साइटों की सूची बनाने के लिए किया जा सकता है जिनका मालिकाना हक किसी उपयोगकर्ता के पास है या जिनके पास देखने की अनुमतियां हैं. इसका इस्तेमाल, किसी मौजूदा साइट का नाम बदलने के लिए भी किया जा सकता है. आखिर में, G Suite डोमेन के लिए, इसका इस्तेमाल पूरी साइट में से एक को चुनें.

लिस्टिंग से जुड़ी साइटें

उपयोगकर्ता के पास जिन साइटों का ऐक्सेस है उनकी सूची बनाने के लिए, क्लाइंट के GetSiteFeed() तरीके का इस्तेमाल करें. इस तरीके को अपनाने के लिए, तर्क, uri, जिसका इस्तेमाल आप वैकल्पिक साइट फ़ीड यूआरआई को तय करने के लिए कर सकते हैं. डिफ़ॉल्ट रूप से, GetSiteFeed() क्लाइंट ऑब्जेक्ट पर साइट के नाम और डोमेन सेट का इस्तेमाल करता है. शुरू करना सेक्शन देखें अपने क्लाइंट ऑब्जेक्ट पर इन वैल्यू को सेट करने के बारे में ज़्यादा जानें.

यहां पुष्टि किए गए उपयोगकर्ता की साइटों की सूची फ़ेच करने का एक उदाहरण दिया गया है:

feed = client.GetSiteFeed()

for entry in feed.entry:
  print '%s (%s)' % (entry.title.text, entry.site_name.text)
  if entry.summary.text:
    print 'description: ' + entry.summary.text
  if entry.FindSourceLink():
    print 'this site was copied from site: ' + entry.FindSourceLink()
  print 'acl feed: %s\n' % entry.FindAclLink()
  print 'theme: ' + entry.theme.text

ऊपर दिया गया स्निपेट साइट का टाइटल, साइट का नाम, साइट से कॉपी की गई साइट, और इसका acl फ़ीड यूआरआई प्रिंट करता है.

नई साइटें बनाना

ध्यान दें: यह सुविधा सिर्फ़ G Suite डोमेन के लिए उपलब्ध है.

लाइब्रेरी के CreateSite() तरीके को कॉल करके, नई साइटों का प्रावधान किया जा सकता है. GetSiteFeed() हेल्पर की तरह, CreateSite() भी वैकल्पिक तर्क, uri, जिसका उपयोग आप वैकल्पिक साइट फ़ीड यूआरआई (फ़ाइल बनाते समय आपके SitesClient ऑब्जेक्ट पर सेट किए गए डोमेन के बजाय किसी दूसरे डोमेन में हो.

यहां 'स्लेट' थीम के साथ नई साइट बनाने का एक उदाहरण दिया गया है और उपलब्ध कराकर शीर्षक और (वैकल्पिक) वर्णन:

client.domain = 'example2.com'  # demonstrates creating a site under a different domain.

entry = client.CreateSite('Title For My Site', description='Site to hold precious memories', theme='slate')
print 'Site created! View it at: ' + entry.GetAlternateLink().href

ऊपर दिया गया अनुरोध, G Suite डोमेन example2.com के तहत एक नई साइट बनाएगा. इस तरह, साइट का यूआरएल https://sites.google.com/a/example2.com/title-for-my-site होगा.

अगर साइट बन जाती है, तो सर्वर gdata.sites.data.SiteEntry की मदद से जवाब देगा ऑब्जेक्ट, जिसमें सर्वर के जोड़े गए एलिमेंट शामिल होते हैं: साइट का लिंक, साइट के acl फ़ीड का लिंक, साइट का नाम, शीर्षक, सारांश वगैरह.

किसी साइट को कॉपी करना

ध्यान दें: यह सुविधा सिर्फ़ G Suite डोमेन के लिए उपलब्ध है.

CreateSite() का इस्तेमाल, किसी मौजूदा साइट को कॉपी करने के लिए भी किया जा सकता है. ऐसा करने के लिए, source_site कीवर्ड आर्ग्युमेंट पास करें. कॉपी की गई हर साइट में यह लिंक होगा, जिसे entry.FindSourceLink() के ज़रिए ऐक्सेस किया जा सकता है. यहां साइट को डुप्लीकेट करने का एक उदाहरण दिया गया है को नई साइटें बनाना सेक्शन में बनाया गया है:

copied_site = client.CreateSite('Copy of Title For My Site', description='My Copy', source_site=entry.FindSourceLink())
print 'Site copied! View it at: ' + copied_site.GetAlternateLink().href

अहम पॉइंट:

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

किसी साइट का मेटाडेटा अपडेट करना

किसी साइट का टाइटल या खास जानकारी अपडेट करने के लिए, आपको उस साइट के SiteEntry की ज़रूरत होगी जिसमें वह साइट मौजूद है. यह उदाहरण में पहले SiteEntry को फ़ेच करने के लिए, GetEntry() तरीके का इस्तेमाल किया जाता है. इसके बाद, इसके टाइटल, जानकारी, और कैटगरी टैग को बदला जाता है:

uri = 'https://sites.google.com/feeds/site/example2.com/title-for-my-site'
site_entry = client.GetEntry(uri, desired_class=gdata.sites.data.SiteEntry)

site_entry.title.text = 'Better Title'
site_entry.summary.text = 'Better Description'
category_name = 'My Category'
category = atom.data.Category(
    scheme=gdata.sites.data.TAG_KIND_TERM,
    term=category_name)
site_entry.category.append(category)
updated_site_entry = client.Update(site_entry)

# To force the update, even if you do not have the latest changes to the entry:
# updated_site_entry = client.Update(site_entry, force=True)

वापस सबसे ऊपर जाएं

गतिविधि फ़ीड को फ़ेच किया जा रहा है

ध्यान दें: इस फ़ीड को ऐक्सेस करने के लिए ज़रूरी है कि आप साइट के सहयोगी या मालिक हों. आपके क्लाइंट को AuthSub, OAuth या ClientLogin टोकन का इस्तेमाल करके पुष्टि करनी होगी. Sites की सेवा के लिए पुष्टि करना देखें.

गतिविधि फ़ीड को फ़ेच करके, किसी साइट की हाल की गतिविधि (बदलाव) को फ़ेच किया जा सकता है. लाइब्रेरी का GetActivityFeed() तरीका इस फ़ीड को ऐक्सेस करने की सुविधा देता है:

print "Fetching activity feed of '%s'...\n" % client.site
feed = client.GetActivityFeed()

for entry in feed.entry:
  print '%s [%s on %s]' % (entry.title.text, entry.Kind(), entry.updated.text)

GetActivityFeed() को कॉल करने पर एक gdata.sites.data.ActivityFeed ऑब्जेक्ट मिलता है, जिसमें gdata.sites.data.ActivityEntry. गतिविधि की हर एंट्री में साइट में किया गया कोई परिवर्तन.

वापस सबसे ऊपर जाएं

संशोधन इतिहास फ़ेच किया जा रहा है

ध्यान दें: इस फ़ीड को ऐक्सेस करने के लिए ज़रूरी है कि आप साइट के सहयोगी या मालिक हों. आपके क्लाइंट को AuthSub, OAuth या ClientLogin टोकन का इस्तेमाल करके पुष्टि करनी होगी. Sites की सेवा के लिए पुष्टि करना देखें.

संशोधन फ़ीड किसी भी कॉन्टेंट एंट्री के बदलाव के इतिहास की जानकारी देता है. GetRevisionFeed() विधि का उपयोग किसी दी गई सामग्री प्रविष्टि के लिए संशोधन फ़ेच करने के लिए किया जा सकता है. इस तरीके के लिए, uri का इस्तेमाल करना ज़रूरी नहीं है पैरामीटर, जो gdata.sites.data.ContentEntry, किसी कॉन्टेंट एंट्री का पूरा यूआरआई या कॉन्टेंट एंट्री आईडी स्वीकार करता है.

यह उदाहरण कॉन्टेंट फ़ीड से क्वेरी करता है और पहली कॉन्टेंट एंट्री के लिए रिविज़न फ़ीड को फ़ेच करता है:

print "Fetching content feed of '%s'...\n" % client.site
content_feed = client.GetContentFeed()
content_entry = content_feed.entry[0]

print "Fetching revision feed of '%s'...\n" % content_entry.title.text
revision_feed = client.GetRevisionFeed(content_entry)

for entry in revision_feed.entry:
  print entry.title.text
  print ' new version on:\t%s' % entry.updated.text
  print ' view changes:\t%s' % entry.GetAlternateLink().href
  print ' current version:\t%s...\n' % str(entry.content.html)[0:100]

GetRevisionFeed() को कॉल करने पर एक gdata.sites.data.RevisionFeed ऑब्जेक्ट मिलता है, जिसमें gdata.sites.data.RevisionEntry. बदलाव की हर एंट्री में, कॉन्टेंट जैसी जानकारी शामिल होती है वर्शन नंबर, और नया वर्शन कब बनाया गया था.

वापस सबसे ऊपर जाएं

कॉन्टेंट फ़ीड

कॉन्टेंट फ़ीड को फिर से पाना

ध्यान दें: कॉन्टेंट फ़ीड के लिए पुष्टि करने की ज़रूरत भी पड़ सकती है और नहीं भी; शेयर करने की अनुमतियों के आधार पर. अगर साइट गैर-सार्वजनिक है, तो आपके क्लाइंट को AuthSub, OAuth या ClientLogin टोकन का इस्तेमाल करके प्रमाणित करना होगा. यहां जाएं: Sites की सेवा के लिए पुष्टि करना.

कॉन्टेंट फ़ीड किसी साइट का नया कॉन्टेंट दिखाता है. इसे lib की GetContentFeed() तरीका, जो पास होने के लिए uri स्ट्रिंग पैरामीटर की ज़रूरत होती है कस्टमाइज़ की गई क्वेरी.

यहां पूरा कॉन्टेंट फ़ीड फ़ेच करने और कुछ दिलचस्प एलिमेंट को प्रिंट करने का उदाहरण दिया गया है:

print "Fetching content feed of '%s'...\n" % client.site
feed = client.GetContentFeed()

for entry in feed.entry:
  print '%s [%s]' % (entry.title.text, entry.Kind())

  # Common properties of all entry kinds.
  print ' content entry id: ' + entry.GetNodeId()
  print ' revision:\t%s' % entry.revision.text
  print ' updated:\t%s' % entry.updated.text

  if entry.page_name:
    print ' page name:\t%s' % entry.page_name.text

  if entry.content:
    print ' content\t%s...' % str(entry.content.html)[0:100]

  # Subpages/items will have a parent link.
  parent_link = entry.FindParentLink()
  if parent_link:
    print ' parent link:\t%s' % parent_link

  # The alternate link is the URL pointing to Google Sites.
  if entry.GetAlternateLink():
    print ' view in Sites:\t%s' % entry.GetAlternateLink().href

  # If this entry is a filecabinet, announcementpage, etc., it will have a feed of children.
  if entry.feed_link:
    print ' feed of items:\t%s' % entry.feed_link.href

  print

अहम जानकारी: entry.Kind() का इस्तेमाल यह तय करने के लिए किया जा सकता है कि एंट्री किस तरह की है.

नतीजे के तौर पर मिला feed ऑब्जेक्ट, एक gdata.sites.data.ContentFeed है. इसमें सूची शामिल है gdata.sites.data.ContentEntry महीने में से. हर एंट्री, इसके अंदर किसी अलग पेज/आइटम को दिखाती है उपयोगकर्ता की साइट पर और उसमें उसी तरह की एंट्री के लिए खास एलिमेंट मौजूद होते हैं. बेहतर आइडिया के लिए ऐप्लिकेशन का नमूना देखें प्रॉपर्टी के कुछ मॉडल का इस्तेमाल कर सकते हैं.

वापस सबसे ऊपर जाएं

कॉन्टेंट फ़ीड से जुड़ी क्वेरी के उदाहरण

कुछ स्टैंडर्ड Google Data API क्वेरी पैरामीटर का इस्तेमाल करके, कॉन्टेंट फ़ीड को खोजा जा सकता है जो खास तौर पर क्लासिक Sites API से जुड़े होते हैं. ज़्यादा जानकारी और काम करने वाले पैरामीटर की पूरी सूची के लिए, यहां देखें: रेफ़रंस गाइड.

ध्यान दें: इस सेक्शन में दिए गए उदाहरणों में, gdata.sites.client.MakeContentFeedUri() हेल्पर वाला तरीका इस्तेमाल किया गया है का इस्तेमाल, कॉन्टेंट फ़ीड का बेस यूआरआई बनाने के लिए किया जाता है.

खास एंट्री टाइप को फिर से पाना

किसी खास तरह की एंट्री को फ़ेच करने के लिए, kind पैरामीटर का इस्तेमाल करें. उदाहरण के लिए, यह स्निपेट सिर्फ़ attachment एंट्री दिखाता है:

kind = 'webpage'

print 'Fetching only %s entries' % kind
uri = '%s?kind=%s' % (client.MakeContentFeedUri(), kind)
feed = client.GetContentFeed(uri=uri)

एक से ज़्यादा टाइप के नतीजे पाने के लिए, हर kind को कॉमा लगाकर अलग करें. उदाहरण के लिए, यह स्निपेट filecabinet और listpage एंट्री:

kind = ','.join(['filecabinet', 'listpage'])

print 'Fetching only %s entries' % kind
uri = '%s?kind=%s' % (client.MakeContentFeedUri(), kind)
feed = client.GetContentFeed(uri=uri)

पाथ के हिसाब से पेज वापस पाना

अगर आपको Google साइट में किसी पेज का रिलेटिव पाथ पता है, तो उस खास पेज को फ़ेच करने के लिए, path पैरामीटर का इस्तेमाल किया जा सकता है. यह उदाहरण http://sites.google.com/domainName/siteName/path/to/the/page:

path = '/path/to/the/page'

print 'Fetching page by its path: ' + path
uri = '%s?path=%s' % (client.MakeContentFeedUri(), path)
feed = client.GetContentFeed(uri=uri)

किसी पैरंट पेज के तहत सभी एंट्री वापस लाना

अगर आपको किसी पेज का कॉन्टेंट एंट्री आईडी पता है (उदाहरण, नीचे दिए गए उदाहरण में "1234567890"), तो parent पैरामीटर का इस्तेमाल करें इसकी सभी चाइल्ड एंट्री (अगर कोई हो) फ़ेच करने के लिए:

parent = '1234567890'

print 'Fetching all children of parent entry: ' + parent
uri = '%s?parent=%s' % (client.MakeContentFeedUri(), parent)
feed = client.GetContentFeed(uri=uri)

ज़्यादा पैरामीटर के लिए, रेफ़रंस गाइड देखें.

वापस सबसे ऊपर जाएं



कॉन्टेंट बनाना

ध्यान दें: किसी साइट के लिए कॉन्टेंट बनाने से पहले, पक्का करें कि आपने अपनी साइट को क्लाइंट खाते में सेट कर लिया हो.
client.site = "siteName"

CreatePage() का इस्तेमाल करके, नया कॉन्टेंट बनाया जा सकता है. जैसे, वेबपेज, लिस्टपेज, फ़ाइलकैबिनेट, सूचना वाले पेज वगैरह. इस तरीके का पहला आर्ग्युमेंट, पेज के टाइप के तौर पर होना चाहिए. इसके बाद, टाइटल और एचटीएमएल कॉन्टेंट होना चाहिए.

इस्तेमाल किए जा सकने वाले नोड टाइप की सूची के लिए, रेफ़रंस गाइड में kind पैरामीटर देखें.

नए आइटम / पेज बनाना

यह उदाहरण टॉप-लेवल के तहत एक नया webpage बनाता है, जिसमें पेज के मुख्य हिस्से के लिए कुछ एक्सटर्नल भी शामिल है, और शीर्षक के शीर्षक को 'नए वेबपेज का टाइटल' पर सेट करता है:

entry = client.CreatePage('webpage', 'New WebPage Title', html='<b>HTML content</b>')
print 'Created. View it at: %s' % entry.GetAlternateLink().href

अगर अनुरोध स्वीकार कर लिया जाता है, तो entry में सर्वर पर की गई, gdata.sites.gdata.ContentEntry के तौर पर की गई एंट्री की एक कॉपी शामिल होगी.

ज़्यादा मुश्किल एंट्री टाइप बनाने के लिए, जो डेटा बनाते समय अपने-आप भर जाते हैं (जैसे, कॉलम हेडिंग के साथ listpage), आपको एक ऐसा विकल्प बनाना होगा gdata.sites.data.ContentEntry को मैन्युअल तरीके से भरें, अपनी पसंद की प्रॉपर्टी भरें, और client.Post() को कॉल करें.

कस्टम यूआरएल पाथ में आइटम/पेज बनाना

डिफ़ॉल्ट रूप से, पिछला उदाहरण यूआरएल के नीचे http://sites.google.com/domainName/siteName/new-webpage-title और 'नया वेबपेज टाइटल' का पेज टाइटल होगा. इसका मतलब है कि टाइटल को यूआरएल के लिए, new-webpage-title नॉर्मलाइज़ किया गया है. किसी पेज के यूआरएल पाथ को अपनी पसंद के मुताबिक बनाने के लिए, कॉन्टेंट एंट्री पर page_name प्रॉपर्टी को सेट किया जा सकता है. CreatePage() हेल्पर इसे एक वैकल्पिक कीवर्ड तर्क के रूप में देता है.

इस उदाहरण में, 'फ़ाइल स्टोरेज' हेडिंग के साथ एक नया filecabinet पेज बनाया गया है, लेकिन पेज को भी बनाया गया है http://sites.google.com/domainName/siteName/files यूआरएल के नीचे (http://sites.google.com/domainName/siteName/file-storage के बजाय) page_name प्रॉपर्टी के बारे में बताएं.

entry = client.CreatePage('filecabinet', 'File Storage', html='<b>HTML content</b>', page_name='files')
print 'Created. View it at: ' + entry.GetAlternateLink().href

किसी पेज के यूआरएल पाथ को नाम देने के लिए, सर्वर इन प्राथमिकता नियमों का इस्तेमाल करता है:

  1. page_name, अगर मौजूद है. a-z, A-Z, 0-9, -, _ को पूरा करना ज़रूरी है.
  2. title, अगर पेज का नाम मौजूद नहीं है, तो वैल्यू शून्य नहीं होनी चाहिए. नॉर्मलाइज़ेशन के लिए, खाली सफ़ेद जगह में काट-छांट करके उसे छोटा करके '-' किया जाता है और a-z, A-Z, 0-9, -, _ से मेल न खाने वाले वर्ण निकालें.

सबपेज बनाए जा रहे हैं

किसी पैरंट पेज में सबपेज (बच्चे) बनाने के लिए, CreatePage() के parent कीवर्ड आर्ग्युमेंट का इस्तेमाल करें. parent, gdata.sites.gdata.ContentEntry या कॉन्टेंट की एंट्री का पूरा सेल्फ़ आईडी डालें.

यह उदाहरण announcementpage के कॉन्टेंट फ़ीड के लिए क्वेरी करता है और मिलने वाली पहली क्वेरी के नीचे एक नया announcement बनाता है:

uri = '%s?kind=%s' % (client.MakeContentFeedUri(), 'announcementpage')
feed = client.GetContentFeed(uri=uri)

entry = client.CreatePage('announcement', 'Party!!', html='My place, this weekend', parent=feed.entry[0])
print 'Posted!'

फ़ाइलें अपलोड की जा रही हैं

Google Sites की तरह ही, यह एपीआई भी फ़ाइल कैबिनेट पेज या पैरंट पेज पर अटैचमेंट अपलोड करने की सुविधा देता है. अटैचमेंट अपलोड किए जाने चाहिए पैरंट पेज पर ले जाते हैं. इसलिए, आपको उस ContentEntry पर एक पैरंट लिंक सेट करना होगा जिसे अपलोड करना है. ज़्यादा जानकारी के लिए सबपेज बनाना देखें.

क्लाइंट लाइब्रेरी के UploadAttachment() तरीके में, अटैचमेंट अपलोड करने के लिए इंटरफ़ेस मिलता है.

अटैचमेंट अपलोड हो रहे हैं

यह उदाहरण, उपयोगकर्ता के कॉन्टेंट फ़ीड में मिले पहले filecabinet में PDF फ़ाइल अपलोड करता है. इस अटैचमेंट को 'नए कर्मचारी की हैंडबुक' टाइटल के साथ बनाया गया है और एक (वैकल्पिक) जानकारी, 'HR पैकेट'.

uri = '%s?kind=%s' % (client.MakeContentFeedUri(),'filecabinet')
feed = client.GetContentFeed(uri=uri)

attachment = client.UploadAttachment('/path/to/file.pdf', feed.entry[0], content_type='application/pdf',
                                     title='New Employee Handbook', description='HR Packet')
print 'Uploaded. View it at: %s' % attachment.GetAlternateLink().href

अगर फ़ाइलें अपलोड हो जाती हैं, तो attachment में सर्वर पर, बनाए गए अटैचमेंट की एक कॉपी सेव हो जाएगी.

फ़ोल्डर में अटैचमेंट अपलोड किया जा रहा है

Google Sites में मौजूद फ़ाइल कैबिनेट, फ़ोल्डर के साथ काम करते हैं. UploadAttachment() एक अतिरिक्त कीवर्ड देता है तर्क, folder_name, जिसका इस्तेमाल filecabinet फ़ोल्डर में अटैचमेंट अपलोड करने के लिए किया जा सकता है. बस उस फ़ोल्डर का नाम बताएं:

import gdata.data

ms = gdata.data.MediaSource(file_path='/path/to/file.pdf', content_type='application/pdf')
attachment = client.UploadAttachment(ms, feed.entry[0], title='New Employee Handbook',
                                     description='HR Packet', folder_name='My Folder')

ध्यान दें कि यह उदाहरण इसके बजाय एक gdata.data.MediaSource ऑब्जेक्ट को UploadAttachment() को पास करता है फ़ाइल पाथ का हिस्सा होना चाहिए. यह कॉन्टेंट का टाइप भी पास नहीं करता. इसके बजाय, MediaSource ऑब्जेक्ट पर कॉन्टेंट का टाइप बताया जाता है.

वेब अटैचमेंट

वेब अटैचमेंट खास तरह के अटैचमेंट होते हैं. मूल रूप से, वे वेब पर मौजूद दूसरी फ़ाइलों के लिंक होती हैं जिसे आप अपनी filecabinet लिस्टिंग में जोड़ सकते हैं. यह सुविधा, 'यूआरएल से फ़ाइल जोड़ें' से मिलती-जुलती है अपलोड करने का तरीका जानना होगा.

ध्यान दें: वेब अटैचमेंट सिर्फ़ filecabinet के तहत बनाए जा सकते हैं. इन्हें दूसरी तरह के पेजों पर अपलोड नहीं किया जा सकता.

यह उदाहरण, उपयोगकर्ता के कॉन्टेंट फ़ीड में मिलने वाले पहले filecabinet के तहत वेब अटैचमेंट बनाता है. इसका टाइटल और जानकारी (ज़रूरी नहीं) 'GoogleLogo' पर सेट है और 'अच्छे रंग'.

uri = '%s?kind=%s' % (client.MakeContentFeedUri(),'filecabinet')
feed = client.GetContentFeed(uri=uri)

parent_entry = feed.entry[0]
image_url = 'http://www.google.com/images/logo.gif'
web_attachment = client.CreateWebAttachment(image_url, 'image/gif', 'GoogleLogo',
                                            parent_entry, description='nice colors')

print 'Created!'

कॉल 'http://www.google.com/images/logo.gif' पर चित्र की ओर इशारा करते हुए एक लिंक बनाता है filecabinet में.

वापस सबसे ऊपर जाएं



कॉन्टेंट अपडेट किया जा रहा है

किसी पेज के मेटाडेटा और/या एचटीएमएल कॉन्टेंट को अपडेट करना

किसी भी तरह की एंट्री के मेटाडेटा (टाइटल, pageName वगैरह) और पेज कॉन्टेंट में, क्लाइंट की Update() तरीके का इस्तेमाल करके.

listpage को इन बदलावों के साथ अपडेट करने का एक उदाहरण नीचे दिया गया है:

  • इस टाइटल को 'अपडेट किया गया टाइटल' में बदला गया
  • पेज का एचटीएमएल कॉन्टेंट, 'अपडेट किया गया एचटीएमएल कॉन्टेंट' में अपडेट कर दिया गया है
  • सूची के पहले कॉलम का शीर्षक बदलकर "मालिक" कर दिया गया है
uri = '%s?kind=%s' % (client.MakeContentFeedUri(),'listpage')
feed = client.GetContentFeed(uri=uri)

old_entry = feed.entry[0]

# Update the listpage's title, html content, and first column's name.
old_entry.title.text = 'Updated Title'
old_entry.content.html = 'Updated HTML Content'
old_entry.data.column[0].name = 'Owner'

# You can also change the page's webspace page name on an update.
# old_entry.page_name = 'new-page-path'

updated_entry = client.Update(old_entry)
print 'List page updated!'

किसी अटैचमेंट का कॉन्टेंट और मेटाडेटा बदलना

कोई नया MediaSource ऑब्जेक्ट बनाकर, किसी अटैचमेंट की फ़ाइल का कॉन्टेंट बदला जा सकता है को इंस्टॉल करने के साथ-साथ, क्लाइंट के Update() वाले तरीके को भी कॉल करें. अटैचमेंट की मेटाडेटा (जैसे कि शीर्षक और जानकारी) को भी अपडेट किया जा सकता है या सिर्फ़ मेटाडेटा को अपडेट किया जा सकता है. इस उदाहरण में, फ़ाइल के कॉन्टेंट और मेटाडेटा को एक साथ अपडेट करने के बारे में बताया गया है:

import gdata.data

# Load the replacement content in a MediaSource. Also change the attachment's title and description.
ms = gdata.data.MediaSource(file_path='/path/to/replacementContent.doc', content_type='application/msword')
existing_attachment.title.text = 'Updated Document Title'
existing_attachment.summary.text = 'version 2.0'

updated_attachment = client.Update(existing_attachment, media_source=ms)
print "Attachment '%s' changed to '%s'" % (existing_attachment.title.text, updated_attachment.title.text)

वापस सबसे ऊपर जाएं



कॉन्टेंट मिटाया जा रहा है

Google साइट से कोई पेज या आइटम हटाने के लिए, सबसे पहले कॉन्टेंट की एंट्री फिर से पाएं. इसके बाद, क्लाइंट के Delete() तरीके को कॉल करें.

client.Delete(content_entry)

आपके पास कॉन्टेंट एंट्री के edit लिंक के Delete() तरीके को पास करने और/या उसे मिटाने का विकल्प भी होता है:

# force=True sets the If-Match: * header instead of using the entry's ETag.
client.Delete(content_entry.GetEditLink().href, force=True)

ई-टैग के बारे में ज़्यादा जानकारी के लिए, Google Data API से जुड़ी रेफ़रंस गाइड देखें.

वापस सबसे ऊपर जाएं



अटैचमेंट डाउनलोड किए जा रहे हैं

हर attachment एंट्री में कॉन्टेंट src का लिंक होता है. इसका इस्तेमाल फ़ाइल का कॉन्टेंट डाउनलोड करने के लिए किया जा सकता है. Sites क्लाइंट में इस लिंक से फ़ाइल को ऐक्सेस और डाउनलोड करने के लिए, एक हेल्पर तरीका उपलब्ध है: DownloadAttachment(). यह अपने पहले आर्ग्युमेंट के लिए, gdata.sites.data.ContentEntry या डाउनलोड यूआरआई को स्वीकार करता है. साथ ही, अटैचमेंट सेव करने के लिए फ़ाइल पाथ स्वीकार करता है भेजना है.

यह उदाहरण एक खास अटैचमेंट एंट्री को फ़ेच करता है (इसके self लिंक के बारे में क्वेरी करके) और बताए गए पाथ पर फ़ाइल डाउनलोड करता है:

uri = 'https://sites.google.com/feeds/content/site/siteName/1234567890'
attachment = client.GetEntry(uri, desired_class=gdata.sites.data.ContentEntry)

print "Downloading '%s', a %s file" % (attachment.title.text, attachment.content.type)
client.DownloadAttachment(attachment, '/path/to/save/test.pdf')

print 'Downloaded!'

यह ऐप्लिकेशन डेवलपर की ज़िम्मेदारी है कि वह कोई ऐसा फ़ाइल एक्सटेंशन तय करे जो अटैचमेंट के कॉन्टेंट टाइप के हिसाब से सही हो. कॉन्टेंट किस तरह का है entry.content.type में मिल सकते हैं.

कुछ मामलों में आप डिस्क पर फ़ाइल डाउनलोड नहीं कर सकते (उदाहरण के लिए अगर आपका ऐप्लिकेशन Google App Engine में चल रहा है). ऐसी स्थितियों में, फ़ाइल के कॉन्टेंट को फ़ेच करने और उसे मेमोरी में सेव करने के लिए, _GetFileContent() का इस्तेमाल करें.

डाउनलोड किया गया यह उदाहरण, मेमोरी का अटैचमेंट है.

try:
  file_contents = client._GetFileContent(attachment.content.src)
  # TODO: Do something with the file contents
except gdata.client.RequestError, e:
  raise e

वापस सबसे ऊपर जाएं

ACL फ़ीड

शेयर करने की अनुमतियों (एसीएल) के बारे में खास जानकारी

एसीएल फ़ीड की हर एसीएल एंट्री किसी खास इकाई की ऐक्सेस भूमिका दिखाती है. इसमें उपयोगकर्ता, उपयोगकर्ताओं का ग्रुप, डोमेन, या डिफ़ॉल्ट ऐक्सेस (जो एक सार्वजनिक साइट है). एंट्री सिर्फ़ उन इकाइयों के लिए दिखाई जाएंगी जिनके पास साफ़ तौर पर ऐक्सेस है. एक एंट्री दिखेगी हर ईमेल पते के लिए, "ऐक्सेस वाले लोग" सेक्शन में पैनल पर जाएं. इसलिए, डोमेन के एडमिन नहीं दिखाए जाएंगे, भले ही उनके पास किसी साइट का इंप्लिसिट ऐक्सेस हो.

भूमिकाएं

रोल एलिमेंट, किसी इकाई के ऐक्सेस लेवल के बारे में बताता है. gAcl:role एलिमेंट की चार वैल्यू हो सकती हैं:

  • रीडर — दर्शक (रीड ओनली ऐक्सेस के बराबर).
  • लेखक — सहयोगी (पढ़ने/लिखने का ऐक्सेस) के बराबर है.
  • मालिक — आम तौर पर, साइट का एडमिन (पढ़ने/लिखने के ऐक्सेस के बराबर).

स्कोप

स्कोप एलिमेंट उस इकाई के बारे में बताता है जिसके पास यह ऐक्सेस लेवल है. gAcl:scope एलिमेंट चार तरह के हो सकते हैं:

  • user — ईमेल पते की वैल्यू, जैसे कि "user@gmail.com".
  • group — Google ग्रुप का ईमेल पता, जैसे कि "group@domain.com".
  • domain — G Suite डोमेन नाम, जैसे कि "domain.com".
  • डिफ़ॉल्ट — "डिफ़ॉल्ट" टाइप का सिर्फ़ एक स्कोप हो सकता है, जिसमें कोई वैल्यू नहीं होती (उदाहरण के लिए, <gAcl:scope type="default">). यह खास स्कोप, डिफ़ॉल्ट रूप से किसी भी उपयोगकर्ता के पास मौजूद ऐक्सेस को कंट्रोल करता है एक सार्वजनिक साइट पर.

ध्यान दें: डोमेन में gAcl:role की वैल्यू नहीं हो सकती "मालिक" के तौर पर सेट करें वे सिर्फ़ पाठक या लेखक हो सकते हैं.

ACL फ़ीड फिर से प्राप्त की जा रही है

एसीएल फ़ीड का इस्तेमाल, साइट की शेयर करने की अनुमतियों को कंट्रोल करने के लिए किया जा सकता है. साथ ही, इसे GetAclFeed() तरीके से फ़ेच किया जा सकता है.

नीचे दिए गए उदाहरण में, SitesClient ऑब्जेक्ट पर सेट की गई साइट के लिए एसीएल फ़ीड को फ़ेच किया गया है, और अनुमति की एंट्री को प्रिंट करता है:

print "Fetching acl permissions of site '%s'...\n" % client.site

feed = client.GetAclFeed()
for entry in feed.entry:
  print '%s (%s) - %s' % (entry.scope.value, entry.scope.type, entry.role.value)

क्वेरी के सही होने के बाद, feed एक gdata.sites.data.AclFeed ऑब्जेक्ट होगा, जिसमें gdata.sites.data.AclEntry की सूची.

अगर SiteFeed में एंट्री इस्तेमाल की जा रही हैं, तो हर SiteEntry में अपने ACL फ़ीड का लिंक होता है. उदाहरण के लिए, यह स्निपेट उपयोगकर्ता की साइट फ़ीड में पहली साइट फ़ेच करता है और उसके ACL फ़ीड से क्वेरी करता है:

feed = client.GetSiteFeed()
site_entry = feed.entry[0]

print "Fetching acl permissions of site '%s'...\n" % site_entry.site_name.text
feed = client.GetAclFeed(uri=site_entry.FindAclLink())

साइट शेयर करना

ध्यान दें: कुछ एसीएल सिर्फ़ तब शेयर किए जा सकते हैं, जब डोमेन कॉन्फ़िगर किया गया हो ऐसी अनुमतियां देने के लिए (उदाहरण के लिए, अगर G Suite डोमेन के लिए डोमेन के बाहर शेयर करने की सुविधा चालू हो वगैरह).

एपीआई का इस्तेमाल करके Google साइट शेयर करने के लिए, अपनी ज़रूरत के हिसाब से gdata.sites.gdata.AclEntry बनाएं gdata.acl.data.AclScope और gdata.acl.data.AclRole वैल्यू. ज़्यादा जानकारी के लिए, संभावित AclScope के लिए, ACL फ़ीड की खास जानकारी सेक्शन और AclRoles मान.

यह उदाहरण साइट पर उपयोगकर्ता 'user@example.com' को पढ़ने की अनुमतियां देता है:

import gdata.acl.data

scope = gdata.acl.data.AclScope(value='user@example.com', type='user')
role = gdata.acl.data.AclRole(value='reader')
acl = gdata.sites.gdata.AclEntry(scope=scope, role=role)

acl_entry = client.Post(acl, client.MakeAclFeedUri())
print "%s %s added as a %s" % (acl_entry.scope.type, acl_entry.scope.value, acl_entry.role.value)

ग्रुप और डोमेन लेवल पर शेयर करना

एक उपयोगकर्ता के साथ साइट शेयर करने की तरह ही, आप उस साइट को Google ग्रुप या G Suite डोमेन. ज़रूरी scope वैल्यू नीचे दी गई हैं.

किसी ग्रुप के ईमेल पते के साथ शेयर करना:

scope = gdata.acl.data.AclScope(value='group_name@example.com', type='group')

पूरे डोमेन के साथ शेयर करना:

scope = gdata.acl.data.AclScope(value='example.com', type='domain')

डोमेन स्तर पर शेयर करना सिर्फ़ G Suite डोमेन के लिए काम करता है और सिर्फ़ उस डोमेन के लिए काम करता है जिस पर साइट होस्ट की गई है. उदाहरण के लिए, http://sites.google.com/a/domain1.com/siteA पर पूरी साइट का ऐक्सेस सिर्फ़ Domains1.com के साथ शेयर किया जा सकता है, डोमेन2.com के साथ नहीं. ऐसी साइटें जो जो G Suite डोमेन पर होस्ट नहीं किए गए हैं (जैसे कि http://sites.google.com/site/siteB) डोमेन को न्योता नहीं भेज सकते हैं.

शेयर करने की अनुमतियों में बदलाव किया जा रहा है

किसी साइट पर शेयर करने की मौजूदा अनुमति के लिए, सबसे पहले उस AclEntry को फ़ेच करें जिसकी शिकायत की गई है. इसके बाद, अनुमति में बदलाव करें ज़रूरत के मुताबिक, और फिर सर्वर पर ACL में बदलाव करने के लिए क्लाइंट के Update() तरीके को कॉल करें.

इस उदाहरण में, साइट शेयर करना सेक्शन से पिछले acl_entry में बदलाव किया गया है, 'user@example.com' को अपडेट करके लेखक बनने के लिए (सहयोगी)

acl_entry.role.value = 'writer'
updated_acl = client.Update(acl_entry)

# To force the update, even if you do not have the latest changes to the entry:
# updated_acl = client.Update(acl_entrys, force=True)

ई-टैग के बारे में ज़्यादा जानकारी के लिए, Google Data API से जुड़ी रेफ़रंस गाइड देखें.

शेयर करने की अनुमतियां हटाई जा रही हैं

शेयर करने की अनुमति हटाने के लिए, पहले AclEntry को फिर से पाएं. इसके बाद, क्लाइंट के Delete() तरीके को कॉल करें.

client.Delete(acl_entry)

Delete() तरीके को acl एंट्री का edit लिंक भी पास किया जा सकता है और/या उसे हमेशा के लिए मिटाया जा सकता है:

# force=True sets the If-Match: * header instead of using the entry's ETag.
client.Delete(acl_entry.GetEditLink().href, force=True)

ई-टैग के बारे में ज़्यादा जानकारी के लिए, Google Data API से जुड़ी रेफ़रंस गाइड देखें.

वापस सबसे ऊपर जाएं

खास विषय

किसी फ़ीड या एंट्री को फिर से वापस पाना

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

इस तरह की शर्तों के साथ डेटा वापस पाने के लिए, GetEntry() में एक ETag वैल्यू पास करें. उदाहरण के लिए, अगर आपके पास कोई मौजूदा entry ऑब्जेक्ट था:

import gdata.client

try:
  entry = client.GetEntry(entry.GetSelfLink().href, desired_class=gdata.sites.data.ContentEntry, etag=entry.etag)
except gdata.client.NotModified, error:
  print 'You have the latest copy of this entry'
  print error

अगर GetEntry(), gdata.client.NotModified अपवाद देता है, तो एंट्री ईटैग, सर्वर पर मौजूद वर्शन से मेल खाता है. इसका मतलब है कि आपके पास सबसे अप-टू-डेट कॉपी है. हालांकि, अगर किसी दूसरे क्लाइंट/उपयोगकर्ता ने बदलाव किए हैं, तो नई एंट्री entry में दिखेगी साथ ही, किसी सवाल का जवाब नहीं दिया जाएगा.

ई-टैग के बारे में ज़्यादा जानकारी के लिए, Google Data API से जुड़ी रेफ़रंस गाइड देखें.

वापस सबसे ऊपर जाएं