Python Kılavuzu

Önemli: Bu doküman 2012'den önce yazılmıştır. Kimlik doğrulama seçenekleri (OAuth 1.0, AuthSub ve ClientLogin) yukarıda açıklandığı gibi resmi olarak kullanımdan kaldırıldı 20 Nisan 2012'de tamamlanmıştır ve artık kullanılamamaktadır. Şu Google Hesabı'na geçiş yapmanızı öneririz: OAuth 2.0 kullanmaya başlayın.

Google Sites Data API'sı, istemci uygulamaların bir Google Sitesindeki içeriğe erişmesine, bu içeriği yayınlamasına ve değiştirmesine olanak tanır. İstemci uygulamanız ayrıca son etkinliklerin listesini isteyebilir, düzeltme geçmişini alabilir ve ekleri indirebilir.

Bu kılavuz, Sites Data API'nın özelliklerine dair biraz arka plan sağlamanın yanı sıra, API ile etkileşime geçme hakkında örnekler de sunar. (Python istemci kitaplığı) kullanın. İstemci kitaplığını oluşturma konusunda yardım almak için Google Data Python İstemci Kitaplığı'nı Kullanmaya Başlama. Bu konuyla ilgileniyorsanız Python istemci kitaplığı tarafından klasik Sites API ile etkileşim kurmak için kullanılan temel protokol hakkında daha fazla bilgi edinmek için lütfen protokol kılavuzuna bakın.

Kitle

Bu doküman, Google Sites ile etkileşimde bulunan istemci uygulamaları yazmak isteyen geliştiricilere yöneliktir. Bunun için Google Data Python İstemci Kitaplığı'nı kullanın.

Başlarken

Python istemci kitaplığını kullanmak için Python 2.2+ sürümüne ve DependencyModules wiki sayfasında listelenen modüllere ihtiyacınız vardır. İstemci kitaplığını indirdikten sonra, İstemciyi yükleme ve kullanma konusunda yardım almak için Google Veri Python Kitaplığı'nı Kullanmaya Başlama adlı makaleyi inceleyin.

Örneği çalıştırma

Tam çalışma örneği, projenin Mercurial deposunun samples/sites alt dizininde bulunmaktadır. (/samples/sites/sites_example.py).

Örneği aşağıdaki gibi çalıştırın:

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

Gerekli işaretler sağlanmazsa uygulama bu değerleri girmenizi ister. Örnek, kullanıcının bir dizi işlem gerçekleştirmesine olanak tanır. klasik Sites API'nin nasıl kullanılacağını gösterir. Bu nedenle, belirli işlemleri (ör. içerik değiştirme) gerçekleştirmek için kimlik doğrulaması yapmanız gerekir. Program, AuthSub, OAuth veya ClientLogin.

Bu kılavuzdaki örnekleri kendi kodunuza eklemek için aşağıdaki import ifadelerine ihtiyacınız vardır:

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

Ayrıca, klasik Sites API'ye istemci bağlantısını temsil eden bir SitesClient nesnesi oluşturmanız gerekir. Uygulamanızın adını ve Sitenin web alanı adını (URL'sinden) iletin:

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

Bir G Suite alanında barındırılan bir Siteyle çalışmak için alanı domain parametresini kullanarak ayarlayın:

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

Yukarıdaki snippet'lerde source bağımsız değişkeni isteğe bağlıdır ancak günlük kaydı amacıyla kullanılması önerilir. Uygulama Şu biçimi kullanın: company-applicationname-version

Not: Kılavuzun geri kalanında, client değişkeninde bir SitesClient nesnesi oluşturduğunuz varsayılır.

Klasik Sites API için kimlik doğrulama

Python istemci kitaplığı, herkese açık veya gizli feed'lerle çalışmak için kullanılabilir. Sites Data API, gizli ve herkese açık verilere erişim sağlar bir sitenin izinlerine ve gerçekleştirmeye çalıştığınız işleme bağlı olarak değişir. Örneğin içerik feed'ini okuyabilir ve ancak üzerinde güncelleme yapılmaması (kimliği doğrulanmış istemci gerektirir). Bu işlem, ClientLogin kullanıcı adı/şifre kimlik doğrulaması, AuthSub veya OAuth.

AuthSub, OAuth ve ClientLogin hakkında daha fazla bilgi için lütfen Google Veri API'leri Kimlik Doğrulaması'na Genel Bakış sayfasına bakın.

Web uygulamaları için AuthSub

Web Uygulamaları için AuthSub Kimlik Doğrulaması, aşağıdaki değişikliği yapması gereken istemci uygulamaları tarafından kullanılmalıdır: Google veya G Suite hesaplarına giriş yapan kullanıcıların kimliklerini doğrulamalıdır. Operatörün, Google Sites kullanıcısının kullanıcı adı ve şifresine erişmesi gerekmez. Yalnızca AuthSub jetonu gereklidir.

AuthSub'ı web uygulamanıza entegre etme talimatlarını görüntüleyin

Tek kullanımlık jeton isteyin

Kullanıcı, uygulamanızı ilk kez ziyaret ettiğinde kimlik doğrulaması yapması gerekir. Genellikle, geliştiriciler bazı metinler ve kullanıcıyı yönlendiren bir bağlantı yazdırır kullanıcının kimliğini doğrulamak ve dokümanlarına erişim isteğinde bulunmak için AuthSub onay sayfasına gidin. Google Data Python istemci kitaplığı şu işlevi sağlar: generate_auth_sub_url() kullanarak URL'yi oluşturun. Aşağıdaki kod AuthSubRequest sayfasına bir bağlantı oluşturur.

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 tarafından barındırılan bir alanda kullanıcıların kimliğini doğrulamak istiyorsanız alan adını generate_auth_sub_url() ile paylaşın:

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() yöntemi, birden fazla parametre alır (ör. Search Ads 360'ın kullandığı sorgu parametrelerine AuthSubRequest işleyicisi):

  • sonraki URL: Google'ın yönlendirme yapacağı URL Kullanıcı hesabına giriş yapıp erişim izni verdikten sonra; Yukarıdaki örnekte http://www.example.com/myapp.py
  • kapsamhttps://sites.google.com/feeds/
  • secure, jetonun güvenli ve kayıtlı modda kullanılıp kullanılmayacağını belirten bir boole değeridir; Yukarıdaki örnekte True
  • session, tek kullanımlık jetonun daha sonra bir oturum jetonuyla değiştirilip değiştirilmeyeceğini belirten ikinci bir boole değeri; Yukarıdaki örnekte True

Oturum jetonuna yükseltme

AuthSub'ı Google Data API İstemci Kitaplıklarıyla kullanma başlıklı makaleyi inceleyin.

Oturum jetonu hakkında bilgi alma

AuthSub'ı Google Data API İstemci Kitaplıklarıyla kullanma başlıklı makaleyi inceleyin.

Oturum jetonunu iptal etme

AuthSub'ı Google Data API İstemci Kitaplıklarıyla kullanma başlıklı makaleyi inceleyin.

İpucu: Uygulamanız uzun ömürlü oturum jetonunu başarıyla edindikten sonra bunları daha sonra kullanmak üzere geri çağırmak için veritabanınızda saklarız. Uygulamanızı her çalıştırmada kullanıcıyı AuthSub'a geri göndermenize gerek yoktur. İstemcide mevcut bir jetonu ayarlamak için client.auth_token = gdata.gauth.AuthSubToken(TOKEN_STR) kullanın.

Web veya yüklü/mobil uygulamalar için OAuth

OAuth, AuthSub'a alternatif olarak kullanılabilir ve web uygulamaları için tasarlanmıştır. OAuth, AuthSub'ın güvenli ve kayıtlı modunu kullanmaya benzerdir .

OAuth'u yüklü uygulamanıza entegre etme talimatlarını görüntüleyin

İstek jetonu getiriliyor

Google Data API İstemci Kitaplıklarıyla OAuth Kullanma başlıklı makaleyi inceleyin.

İstek jetonunu yetkilendirme

Google Data API İstemci Kitaplıklarıyla OAuth Kullanma başlıklı makaleyi inceleyin.

Erişim jetonuna yükseltme

Google Data API İstemci Kitaplıklarıyla OAuth Kullanma başlıklı makaleyi inceleyin.

İpucu: Uygulamanız başarıyla bir OAuth erişim jetonu aldıktan sonra, bunları daha sonra kullanmak üzere geri çağırmak için veritabanınızda saklarız. Uygulamanızı her çalıştırmada kullanıcıyı OAuth üzerinden geri göndermenize gerek yoktur. İstemcide mevcut bir jetonu ayarlamak için client.auth_token = gdata.oauth.OAuthToken(TOKEN_STR, TOKEN_SECRET) kullanın.

Yüklü/mobil uygulamalar için ClientLogin

ClientLogin, şunları yapması gereken yüklü veya mobil uygulamalar tarafından kullanılmalıdır: kullanıcılarının kimliklerini Google Hesaplarına doğrulatmaları. İlk çalıştırmada, uygulamanız kullanıcıdan kullanıcı adını/şifresini ister. Sonraki taleplerde, bir kimlik doğrulama jetonuna başvuruldu.

ClientLogin'i yüklü uygulamanıza dahil etme talimatlarını görüntüleyin

ClientLogin'i kullanmak için ClientLogin() SitesClient nesnesinin yöntemi (şundan devralınan): GDClient. E-posta adresini belirtin ve müşterinizin adına istek gönderen kullanıcının şifresi. Örneğin:

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

İpucu: Uygulamanız kullanıcının kimliğini ilk kez başarıyla doğruladıktan sonra yetkilendirme jetonunu, daha sonra kullanmak üzere veritabanınızda depolayın. Uygulamanızı her çalıştırmada kullanıcıdan şifresini istemenize gerek yoktur. Daha fazla bilgi için Yetkilendirme jetonunu geri çağırma bölümüne bakın.

Python uygulamalarınızda ClientLogin'i kullanma hakkında daha fazla bilgi için ClientLogin'i Google Data API İstemci Kitaplıklarıyla kullanma başlıklı makaleye bakın.

Başa dön

Site Özet Akışı

Site özet akışı, bir kullanıcının sahip olduğu veya görüntüleme izinlerine sahip olduğu Google Sites sitelerini listelemek için kullanılabilir. Mevcut bir sitenin adını değiştirmek için de kullanılabilir. Son olarak, G Suite alanlarında, bir dosyayı paylaşmak ve/veya bir şablondur.

Site listeleme

Kullanıcının erişebildiği siteleri listelemek için istemcinin GetSiteFeed() yöntemini kullanın. Yöntem, isteğe bağlı olarak bağımsız değişkeni uri. Alternatif bir site özet akışı URI'si belirtmek için kullanabilirsiniz. Varsayılan olarak, GetSiteFeed() istemci nesnesinde ayarlanan site adını ve alan adını kullanır. Aşağıdaki adımları öğrenmek için Başlarken bölümüne bakın: istemci nesnenizde bu değerleri ayarlama hakkında daha fazla bilgi edinin.

Kimliği doğrulanmış kullanıcının site listesini getirmeyle ilgili bir örneği aşağıda bulabilirsiniz:

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

Yukarıdaki snippet sitenin başlığını, site adını, kopyalandığı siteyi ve EKL feed URI'sini yazdırır.

Yeni site oluşturma

Not: Bu özellik yalnızca G Suite alanlarında kullanılabilir.

Yeni sitelerin temel hazırlığı, kitaplığın CreateSite() yöntemi kullanılarak yapılabilir. GetSiteFeed() yardımcısına benzer şekilde, CreateSite() şunu da kabul eder: isteğe bağlı uri bağımsız değişkenidir. Bu bağımsız değişkeni, alternatif bir site özet akışı URI'si belirtmek için kullanabilirsiniz ( site, SitesClient nesnenizde ayarlanan alan dışında farklı bir alan adına dahil edilmelidir.

"Seçenek listesi" temasıyla yeni bir site oluşturmaya ilişkin bir örneği burada bulabilirsiniz ve kullanıcılara başlık ve (isteğe bağlı) açıklama:

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

Yukarıdaki istek, example2.com G Suite alanı altında yeni bir site oluşturacak. Bu nedenle, sitenin URL'si https://sites.google.com/a/example2.com/sitemin-başlıki olur.

Site başarıyla oluşturulursa sunucu bir gdata.sites.data.SiteEntry ile yanıt verir. nesne; sunucu tarafından eklenen öğelerle doldurulur: site bağlantısı, sitenin EKL özet akışı. Site adı, başlık, özet vb.

Site kopyalama

Not: Bu özellik yalnızca G Suite alanlarında kullanılabilir.

CreateSite(), mevcut bir siteyi kopyalamak için de kullanılabilir. Bunu yapmak için source_site anahtar kelime bağımsız değişkenini iletin. Kopyalanan tüm sitelerde, entry.FindSourceLink() üzerinden erişilebilen bu bağlantı bulunur. Aşağıda, sitenizin kopyasını oluşturmaya ilişkin bir Yeni site oluşturma bölümünde oluşturulur:

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

Önemli noktalar:

  • Yalnızca kimliği doğrulanmış kullanıcının sahip olduğu siteler ve site şablonları kopyalanabilir.
  • Site şablonu da kopyalanabilir. "Bu siteyi şablon olarak yayınla" seçeneği sunulduğunda site, şablondur ayarının işaretli olup olmadığını kontrol edin.
  • Kaynak sitede sahip olarak listelenmediğiniz sürece, başka bir alandan site kopyalayabilirsiniz.

Bir sitenin meta verilerini güncelleme

Bir sitenin başlığını veya özetini güncellemek için söz konusu siteyi içeren bir SiteEntry olması gerekir. Bu örnek, ilk olarak bir SiteEntry getirmek ve ardından başlığını, açıklamasını ve kategori etiketini değiştirmek için GetEntry() yöntemini kullanır:

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)

Başa dön

Etkinlik Feed'i Getiriliyor

Not: Bu feed'e erişmek için sitenin ortak çalışanı veya sahibi olmanız gerekir. İstemciniz bir AuthSub, OAuth veya ClientLogin jetonu kullanarak kimlik doğrulamalıdır. Sites hizmetinde kimlik doğrulama başlıklı makaleyi inceleyin.

Etkinlik feed'ini getirerek bir Site'nin son etkinliğini (değişiklikleri) getirebilirsiniz. lib'in GetActivityFeed() yöntemi bu feed'e erişim sağlar:

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() işlevi çağrıldığında, şunları içeren bir gdata.sites.data.ActivityFeed nesnesi döndürülür: gdata.sites.data.ActivityEntry. Her etkinlik girişi, Sitede yapılan bir değişikliktir.

Başa dön

Düzeltme Geçmişi Alınıyor

Not: Bu feed'e erişmek için sitenin ortak çalışanı veya sahibi olmanız gerekir. İstemciniz bir AuthSub, OAuth veya ClientLogin jetonu kullanarak kimlik doğrulamalıdır. Sites hizmetinde kimlik doğrulama başlıklı makaleyi inceleyin.

Düzeltme feed'i, herhangi bir içerik girişinin düzeltme geçmişi hakkında bilgi sağlar. GetRevisionFeed() yöntemi, belirtilen içerik girişine ilişkin düzeltmeleri getirmek için kullanılabilir. Yöntem, isteğe bağlı olarak uri gerektirir bir gdata.sites.data.ContentEntry, içerik girişinin tam URI'si veya içerik giriş kimliğini kabul eden parametre kullanabilirsiniz.

Bu örnek, içerik feed'ini sorgular ve ilk içerik girişi için düzeltme feed'ini getirir:

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() işlevi çağrıldığında, şunları içeren bir gdata.sites.data.RevisionFeed nesnesi döndürülür: gdata.sites.data.RevisionEntry. Her düzeltme girişi, içeriği, sürüm numarası ve yeni sürümün oluşturulduğu tarih gibi bilgileri de içerir.

Başa dön

İçerik feed'i

İçerik feed'ini alma

Not: İçerik feed'i kimlik doğrulama gerektirebilir veya gerekmeyebilir; (Sitenin paylaşım izinlerine bağlı olarak). Site herkese açık değilse istemciniz bir AuthSub, OAuth veya ClientLogin jetonu kullanarak kimlik doğrulaması yapmalıdır. Görüntüleyin Sites hizmeti için kimlik doğrulama.

İçerik feed'i, bir sitenin en son içeriğini döndürür. lib'leri çağırarak erişilebilir iletme işlemi için isteğe bağlı bir uri dize parametresi alan GetContentFeed() yöntemi özelleştirilmiş bir sorgu.

Aşağıda, içerik özet akışının tamamını getirme ve bazı ilginç öğeleri yazdırmaya ilişkin bir örnek verilmiştir:

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

İpucu: entry.Kind(), bir girişin türünü belirlemek için kullanılabilir.

Elde edilen feed nesnesi, liste içeren bir gdata.sites.data.ContentFeed / gdata.sites.data.ContentEntry. Her giriş, içindeki farklı bir sayfayı/öğeyi temsil eder ve sitenin giriş türüne özel öğeler içeriyorsa. Daha iyi bir fikir için örnek uygulamaya göz atın her giriş türünde kullanılabilen bazı özellikler.

Başa dön

İçerik feed'i sorgu örnekleri

Standart Google Data API sorgu parametrelerinden bazılarını kullanarak içerik feed'inde arama yapabilirsiniz. ve klasik Sites API'sine özel olanlar. Daha ayrıntılı bilgi ve desteklenen parametrelerin tam listesi için Başvuru Kılavuzu.

Not: Bu bölümdeki örneklerde gdata.sites.client.MakeContentFeedUri() yardımcı yöntemi kullanılmaktadır temel URI'sını oluşturabilirsiniz.

Belirli giriş türlerini alma

Yalnızca belirli bir giriş türünü getirmek için kind parametresini kullanın. Örneğin, bu snippet yalnızca attachment girişleri döndürür:

kind = 'webpage'

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

Birden fazla tür döndürmek için her bir kind öğesini virgülle ayırın. Örneğin, bu snippet filecabinet ve listpage giriş:

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

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

Yola göre sayfa alma

Google Sitesindeki bir sayfanın göreli yolunu biliyorsanız o sayfayı getirmek için path parametresini kullanabilirsiniz. Bu örnek, şu adreste bulunan sayfayı döndürür: 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)

Üst sayfa altındaki tüm girişleri alma

Bir sayfanın içerik giriş kimliğini biliyorsanız (ör. aşağıdaki örnekte "1234567890") parent parametresini kullanabilirsiniz öğesini eklemeniz gerekir:

parent = '1234567890'

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

Diğer parametreler için Başvuru Kılavuzu'na bakın.

Başa dön



İçerik Oluşturma

Not: Bir site için içerik oluşturmadan önce istemcide sitenizi ayarladığınızdan emin olun.
client.site = "siteName"

Yeni içerik (web sayfaları, liste sayfaları, dosya dolabı sayfaları, duyuru sayfaları vb.) CreatePage() kullanılarak oluşturulabilir. Bu yöntemin ilk bağımsız değişkeni, oluşturulacak sayfanın türü, ardından başlık ve onun HTML içeriği olmalıdır.

Desteklenen düğüm türlerinin listesi için Başvuru Kılavuzu'ndaki kind parametresine bakın.

Yeni öğeler / sayfalar oluşturma

Bu örnek, üst düzey altında yeni bir webpage oluşturur ve sayfa gövdesi için bir XHTML içerir. ve başlık başlığını 'Yeni Web Sayfası Başlığı' olarak ayarlar:

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

İstek başarılı olursa entry, sunucuda oluşturulan girişin bir kopyasını gdata.sites.gdata.ContentEntry olarak içerir.

Oluşturma sırasında doldurulan daha karmaşık bir giriş türü (ör. sütun başlıkları olan bir listpage) oluşturmak için gdata.sites.data.ContentEntry öğesini manuel olarak girin, ilgili özellikleri doldurun ve client.Post() yöntemini çağırın.

Özel URL yolları altında öğeler/sayfalar oluşturma

Varsayılan olarak önceki örnek, URL altında oluşturulur http://sites.google.com/domainName/siteName/new-webpage-title ve "Yeni Web Sayfası Başlığı" şeklinde bir sayfa başlığına sahip olmalıdır. Yani başlık, URL için new-webpage-title değerine normalleştirilir. Bir sayfanın URL yolunu özelleştirmek için içerik girişinde page_name özelliğini ayarlayabilirsiniz. CreatePage() yardımcısı değeri, bunu isteğe bağlı bir anahtar kelime bağımsız değişkeni olarak sağlar.

Bu örnekte, "File Storage" başlıklı yeni bir filecabinet sayfası oluşturuluyor, ancak sayfa oluşturuluyor http://sites.google.com/domainName/siteName/files URL altında (http://sites.google.com/domainName/siteName/file-storage yerine) page_name özelliğini belirterek.

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

Sunucu, bir sayfanın URL yolunu adlandırmak için aşağıdaki öncelik kurallarını kullanır:

  1. Varsa page_name. a-z, A-Z, 0-9, -, _ şartlarını karşılamalıdır.
  2. title, sayfa adı yoksa boş olmamalıdır. Normalleştirme, boşlukları "-" olacak şekilde kırpmak ve daraltmak için kullanılır ve a-z, A-Z, 0-9, -, _ ile eşleşmeyen karakterleri kaldırın.

Alt sayfalar oluşturma

Bir üst sayfa altında alt sayfalar (alt sayfalar) oluşturmak için CreatePage() ürününün parent anahtar kelime bağımsız değişkenini kullanın. parent, bir gdata.sites.gdata.ContentEntry veya girişin tam öz kimliği.

Bu örnekte, announcementpage öğeleri için içerik feed'i sorgulanır ve bulunan ilk öğenin altında yeni bir announcement oluşturulur:

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!'

Dosya yükleme

Google Sites'ta olduğu gibi API, bir dosya dolabı sayfasına veya üst sayfaya ek yükleme işlemlerini destekler. Ekler yüklenmelidir ana sayfaya Bu nedenle, yüklemeye çalıştığınız ContentEntry üzerinde bir üst bağlantı ayarlamanız gerekir. Daha fazla bilgi için Alt sayfa oluşturma bölümüne bakın.

İstemci kitaplığının UploadAttachment() yöntemi, eklerin yüklenmesi için arayüz sağlar.

Ekler yükleniyor

Bu örnekte, kullanıcının içerik feed'inde bulunan ilk filecabinet dosyaya bir PDF dosyası yükleniyor. Ek, "Yeni Çalışan El Kitabı" başlığıyla oluşturuldu ve (isteğe bağlı) bir açıklama ile "HR paketi"ni ekleyin.

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

Yükleme başarılı olursa attachment, oluşturulan ekin sunucuda bir kopyasını içerir.

Klasöre ek yükleme

Google Sites'taki dosya dolapları klasörleri destekler. UploadAttachment(), ek bir anahtar kelime sağlar bağımsız değişkeni olan folder_name öğesini, filecabinet klasörüne ek yüklemek için kullanabilirsiniz. Klasörün adını belirtmeniz yeterlidir:

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')

Bu örneğin UploadAttachment() öğesine bir gdata.data.MediaSource nesnesi ilettiğine dikkat edin olabilir. Ayrıca, belirli bir içerik türünü de geçirmez. Bunun yerine, içerik türü MediaSource nesnesinde belirtilir.

Web ekleri

Web ekleri, özel ek türleridir. Kısaca, web'deki diğer dosyaların bağlantılarıdır filecabinet girişlerinize ekleyebilirsiniz. Bu özellik, "Add file by URL" [URL ile dosya ekle] özelliğine benzerdir. yükleme yöntemini kullanabilirsiniz.

Not: Web ekleri yalnızca filecabinet altında oluşturulabilir. Diğer sayfa türlerine yüklenemezler.

Bu örnek, kullanıcının içerik feed'inde bulunan ilk filecabinet altında bir web eki oluşturur. Başlığı ve (isteğe bağlı) açıklaması "GoogleLogo" olarak ayarlanmıştır ve "güzel renkler" seçeneklerini görebilirsiniz.

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!'

Çağrı, 'http://www.google.com/images/logo.gif' adresindeki resmi işaret eden bir bağlantı oluşturuyor. filecabinet.

Başa dön



İçerik güncelleniyor

Bir sayfanın meta verilerini ve/veya html içeriğini güncelleme

Herhangi bir giriş türünün meta verileri (başlık, pageName vb.) ve sayfa içeriği (İstemcinin Update() yöntemini) kullanarak.

Aşağıda, aşağıdaki değişikliklerle bir listpage güncellemesinin bir örneği verilmiştir:

  • Başlık "Güncellenmiş Başlık" olarak değiştirildi
  • Sayfanın HTML içeriği "Güncellenen HTML İçeriği" olarak güncellenir
  • Listenin ilk sütun başlığı "Sahip" olarak değiştirildi
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!'

Bir ekin içeriğini ve meta verilerini değiştirme

Yeni bir MediaSource nesnesi oluşturarak ekin dosya içeriğini değiştirebilirsiniz. müşterinin Update() yöntemini çağırmasını isteyebilirsiniz. Ekin meta veriler (başlık ve açıklama gibi) veya yalnızca meta veriler de güncellenebilir. Bu örnekte, dosya içeriğinin ve meta verilerin aynı anda güncellenmesi gösterilmektedir:

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)

Başa dön



İçerik Siliniyor

Google Sitesinden bir sayfayı veya öğeyi kaldırmak için öncelikle içerik girişini alın, ardından istemcinin Delete() yöntemini çağırın.

client.Delete(content_entry)

Ayrıca, Delete() yöntemine içerik girişinin edit bağlantısını iletebilir ve/veya silme işlemini zorunlu kılabilirsiniz:

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

ETag'ler hakkında daha fazla bilgi için Google Veri API'leri başvuru kılavuzuna bakın.

Başa dön



Ekleri İndirme

Her attachment girişi, dosya içeriklerini indirmek için kullanılabilecek bir içerik src bağlantısı içerir. Sites istemcisi, dosyaya şu bağlantıdan erişmek ve dosyayı indirmek için yardımcı bir yöntem içerir: DownloadAttachment(). İlk bağımsız değişkeni için bir gdata.sites.data.ContentEntry veya indirme URI'si, eki kaydetmek için de bir dosya yolu kabul eder olarak ayarlayacağım.

Bu örnek, belirli bir ek girişini getirir (self bağlantısını sorgulayarak) ve dosyayı belirtilen yola indirir:

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!'

Ekin içerik türüne uygun bir dosya uzantısı belirtmek uygulama geliştiriciye bağlıdır. İçerik türü entry.content.type adresinde bulunabilir.

Bazı durumlarda (ör. uygulamanız Google App Engine'de çalışıyorsa) dosyayı diske indiremeyebilirsiniz. Bu tür durumlarda, dosya içeriğini getirmek ve bellekte depolamak için _GetFileContent() kullanın.

Bu örnek indirme, anıya yapılan bir ektir.

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

Başa dön

EKL Feed'i

Paylaşım İzinlerine (EKL'ler) Genel Bakış

EKL feed'indeki her EKL girişi, belirli bir varlığın erişim rolünü temsil eder: Kullanıcı, kullanıcı grubu, alan adı, veya varsayılan erişim (herkese açık site). Girişler yalnızca açık erişime sahip varlıklar için gösterilir; bir giriş gösterilir "Erişimi Olan Kişiler"deki her bir e-posta adresi için Google Sites arayüzünün paylaşım ekranındaki paneli açın. Bu nedenle, alan yöneticileri bir siteye erişimleri vardır.

Roller

Rol öğesi, bir öğenin sahip olabileceği erişim düzeyini temsil eder. gAcl:role öğesinin dört olası değeri vardır:

  • reader: Görüntüleyen (salt okuma erişimine eşdeğerdir).
  • writer — bir ortak çalışan (okuma/yazma erişimine eşdeğerdir).
  • owner — genellikle site yöneticisi (okuma/yazma erişimine eşdeğer)

Kapsamlar

Kapsam öğesi, bu erişim düzeyine sahip olan varlığı temsil eder. gAcl:scope öğesinin dört olası türü vardır:

  • user — bir e-posta adresi değeri (ör. "user@gmail.com").
  • group — bir Google Grubu e-posta adresi, ör. "grup@alan.com".
  • alanadi: Bir G Suite alan adı (ör. "alanadi.com").
  • default: "Varsayılan" türünde yalnızca bir olası kapsam vardır ve değer yoktur. (örn.<gAcl:scope type="default">). Bu kapsam, herhangi bir kullanıcının varsayılan olarak sahip olduğu erişimi kontrol eder yayınlayabilirsiniz.

Not: Alanların değeri gAcl:role olamaz. "sahip" olarak ayarla yalnızca okuyucu veya yazar olabilirler.

EKL feed'ini alma

EKL feed'i, bir sitenin paylaşım izinlerini kontrol etmek için kullanılabilir ve GetAclFeed() yöntemi kullanılarak getirilebilir.

Aşağıdaki örnekte şu anda SitesClient nesnesinde ayarlanmış olan sitenin EKL feed'i getirilir. ve izin girişlerini yazdırır:

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)

Başarılı bir sorgudan sonra feed, aşağıdakileri içeren bir gdata.sites.data.AclFeed nesnesi olur: gdata.sites.data.AclEntry girişi.

SiteFeed'deki girişlerle çalışıyorsanız her SiteEntry, kendi EKL feed'inin bir bağlantısını içerir. Örneğin, bu snippet kullanıcının Site feed'indeki ilk siteyi getirir ve EKL feed'ini sorgular:

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())

Site paylaşma

Not: Belirli paylaşım EKL'leri, yalnızca alan yapılandırılmışsa mümkün olabilir tıklayın.

API'yi kullanarak bir Google Sitesi paylaşmak için istediğinizgdata.sites.gdata.AclEntry gdata.acl.data.AclScope ve gdata.acl.data.AclRole değerleri. Bkz. Olası AclScope için EKL feed'ine Genel Bakış bölümü ve AclRoles değerleridir.

Bu örnek, 'kullanici@example.com' kullanıcısına Site'de okuma izinleri verir:

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)

Grup ve Alan düzeyinde paylaşım

Bir siteyi tek bir kullanıcıyla paylaşmaya benzer şekilde, bir siteyi bir Google grubu veya G Suite alanı. Gerekli scope değerleri aşağıda listelenmiştir.

Bir grup e-posta adresiyle paylaşma:

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

Alanın tamamıyla paylaşma:

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

Alan düzeyinde paylaşım yalnızca G Suite alanlarında ve yalnızca sitenin barındırıldığı alan için desteklenir. Örneğin http://sites.google.com/a/alanadi1.com/siteA, Sitenin tamamını alanadi2.com ile paylaşamaz, yalnızca alanadi1.com ile paylaşabilir. Aşağıdakiler bir G Suite alanında barındırılmayan (ör. http://sites.google.com/site/siteB) alan adı davet edemez.

Paylaşım izinlerini değiştirme

Bir sitedeki mevcut bir paylaşım izni için önce söz konusu AclEntry öğesini getirin, izni değiştirin ve ardından sunucudaki EKL'yi değiştirmek için istemcinin Update() yöntemini çağırın.

Bu örnekte, Site paylaşma bölümündeki önceki acl_entry değiştiriliyor. 'kullanici@example.com' adresini güncelleyerek bir yazar olmak (ortak çalışan):

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)

ETag'ler hakkında daha fazla bilgi için Google Veri API'leri başvuru kılavuzuna bakın.

Paylaşım izinleri kaldırılıyor

Bir paylaşım iznini kaldırmak için önce AclEntry öğesini alın, ardından istemcinin Delete() yöntemini çağırın.

client.Delete(acl_entry)

Ayrıca, Delete() yöntemini acl girişinin edit bağlantısını iletebilir ve/veya silme işlemini zorunlu kılabilirsiniz:

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

ETag'ler hakkında daha fazla bilgi için Google Veri API'leri başvuru kılavuzuna bakın.

Başa dön

Özel Konular

Tekrar yayın veya giriş alma

Daha önce aldığınız bir feed'i veya girişi almak isterseniz şunu söyleyerek verimliliği artırabilirsiniz: sunucunun listeyi veya girişi, yalnızca son almanızdan sonra değişmişse göndermesini.

Bu tür koşullu alma işlemi yapmak için GetEntry() öğesine bir ETag değeri iletin. Örneğin, mevcut bir entry nesneniz varsa:

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 istisnasını atarsa giriş ETag, sunucudaki sürümle eşleşir. Böylece en güncel kopyaya sahip olursunuz. Ancak başka bir istemci/kullanıcı değişiklik yaptıysa yeni giriş entry içinde döndürülür. Hiçbir istisna da dikkate alınmayacak.

ETag'ler hakkında daha fazla bilgi için Google Veri API'leri başvuru kılavuzuna bakın.

Başa dön