คู่มือ Python

สำคัญ: เอกสารนี้เขียนก่อนปี 2012 ตัวเลือกการตรวจสอบสิทธิ์ ดังที่อธิบายไว้ในเอกสารนี้ (OAuth 1.0, AuthSub และ ClientLogin) ได้รับการ เลิกใช้งานแล้วอย่างเป็นทางการ ตั้งแต่วันที่ 20 เมษายน 2012 และไม่สามารถใช้ได้อีกต่อไป เราขอแนะนำให้คุณย้ายข้อมูลไปยัง OAuth 2.0 โดยเร็วที่สุด

Google Sites Data API ช่วยให้แอปพลิเคชันไคลเอ็นต์เข้าถึง เผยแพร่ และแก้ไขเนื้อหาภายในเว็บไซต์จาก Google Sites ได้ นอกจากนี้ แอปพลิเคชันไคลเอ็นต์ของคุณยังสามารถขอรายการกิจกรรมล่าสุด เรียกประวัติการแก้ไข และดาวน์โหลดไฟล์แนบได้ด้วย

นอกเหนือจากการให้ข้อมูลพื้นฐานเกี่ยวกับความสามารถของ Sites Data API แล้ว คู่มือนี้ยังให้ตัวอย่างสำหรับการโต้ตอบกับ API โดยใช้ไลบรารีของไคลเอ็นต์ Python สำหรับความช่วยเหลือในการตั้งค่าไลบรารีของไคลเอ็นต์ โปรดดู การเริ่มต้นใช้งานไลบรารีของไคลเอ็นต์ Google Data Python หากคุณสนใจ เพื่อทำความเข้าใจเพิ่มเติมเกี่ยวกับโปรโตคอลพื้นฐานที่ไลบรารีของไคลเอ็นต์ Python ใช้ในการโต้ตอบกับ Sites API เวอร์ชันคลาสสิก โปรดดู คู่มือโปรโตคอล

ผู้ชม

เอกสารนี้มีไว้สำหรับนักพัฒนาซอฟต์แวร์ที่ต้องการเขียนแอปพลิเคชันไคลเอ็นต์ที่โต้ตอบกับ Google Sites โดยใช้ไลบรารีของไคลเอ็นต์ Google Data Python

เริ่มต้นใช้งาน

หากต้องการใช้ไลบรารีของไคลเอ็นต์ Python คุณจะต้องมี Python 2.2+ และโมดูลที่แสดงอยู่ในหน้า wiki DependencyModules หลังจากดาวน์โหลดไลบรารีของไคลเอ็นต์แล้ว โปรดดูการเริ่มต้นใช้งานไลบรารี Google Data Python เพื่อรับความช่วยเหลือในการติดตั้งและใช้งานไคลเอ็นต์

การเรียกใช้ตัวอย่าง

ตัวอย่างการใช้งานแบบเต็มอยู่ในไดเรกทอรีย่อย samples/sites ของที่เก็บ Mercurial ของโปรเจ็กต์ (/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 แบบคลาสสิก ส่งชื่อแอปพลิเคชันของคุณและชื่อเว็บสเปซของเว็บไซต์ (จาก URL ของเว็บไซต์):

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

หมายเหตุ: คำแนะนำที่เหลือจะถือว่าคุณสร้างออบเจ็กต์ SitesClient ในตัวแปร client

การตรวจสอบสิทธิ์กับ Sites API แบบคลาสสิก

คุณจะใช้ไลบรารีของไคลเอ็นต์ Python กับฟีดสาธารณะหรือฟีดส่วนตัวก็ได้ Sites Data API ให้สิทธิ์การเข้าถึงแบบส่วนตัวและสาธารณะ ทั้งนี้ขึ้นอยู่กับสิทธิ์ของไซต์และการดำเนินการที่คุณพยายามทำ ตัวอย่างเช่น คุณอาจสามารถอ่านฟีดเนื้อหาของ ไซต์สาธารณะ แต่ไม่ทำการอัปเดต - เป็นบางอย่างที่ต้องใช้ไคลเอ็นต์ที่ได้รับการตรวจสอบสิทธิ์ ซึ่งสามารถดำเนินการได้ผ่านทาง การตรวจสอบสิทธิ์ชื่อผู้ใช้/รหัสผ่าน ClientLogin, AuthSub หรือ OAuth

โปรดดูข้อมูลเพิ่มเติมเกี่ยวกับ AuthSub, OAuth และ ClientLogin ในภาพรวมการตรวจสอบสิทธิ์ Google Data API

AuthSub สำหรับเว็บแอปพลิเคชัน

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

ดูวิธีการรวม AuthSub ไว้ในเว็บแอปพลิเคชัน

ขอโทเค็นแบบใช้ครั้งเดียว

เมื่อผู้ใช้เข้าชมแอปพลิเคชันเป็นครั้งแรก ผู้ใช้จะต้องตรวจสอบสิทธิ์ โดยปกติแล้ว นักพัฒนาซอฟต์แวร์จะพิมพ์ข้อความและลิงก์ที่นำผู้ใช้ไป ไปยังหน้าการอนุมัติ AuthSub เพื่อตรวจสอบสิทธิ์ผู้ใช้และขอสิทธิ์เข้าถึงเอกสาร ไลบรารีของไคลเอ็นต์ Google Data Python มีฟังก์ชัน generate_auth_sub_url() เพื่อสร้าง 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):

  • URL ถัดไป ซึ่งเป็น URL ที่ Google จะเปลี่ยนเส้นทางไป หลังจากที่ผู้ใช้เข้าสู่ระบบบัญชีของตนและให้สิทธิ์เข้าถึง http://www.example.com/myapp.py ในตัวอย่างด้านบน
  • ขอบเขตhttps://sites.google.com/feeds/
  • secure เป็นบูลีนที่ระบุว่าจะใช้โทเค็นในโหมดปลอดภัยและลงทะเบียนหรือไม่ True ในตัวอย่างด้านบน
  • session เป็นบูลีนที่ 2 เพื่อระบุว่าจะมีการแลกเปลี่ยนโทเค็นแบบใช้ครั้งเดียวเป็นโทเค็นเซสชันในภายหลังหรือไม่ True ในตัวอย่างด้านบน

การอัปเกรดเป็นโทเค็นเซสชัน

โปรดดูการใช้ AuthSub กับไลบรารีของไคลเอ็นต์ Google Data API

การดึงข้อมูลเกี่ยวกับโทเค็นเซสชัน

โปรดดูการใช้ AuthSub กับไลบรารีของไคลเอ็นต์ Google Data API

การเพิกถอนโทเค็นเซสชัน

โปรดดูการใช้ AuthSub กับไลบรารีของไคลเอ็นต์ Google Data API

เคล็ดลับ: เมื่อแอปพลิเคชันได้รับโทเค็นเซสชันที่มีอายุการใช้งานยาวนานเรียบร้อยแล้ว จัดเก็บโทเค็นนั้นในฐานข้อมูลเพื่อเรียกคืนการใช้งานในภายหลัง โดยไม่จำเป็นต้องส่งผู้ใช้กลับไปยัง AuthSub ในทุกการเรียกใช้แอปพลิเคชัน ใช้ client.auth_token = gdata.gauth.AuthSubToken(TOKEN_STR) เพื่อตั้งค่าโทเค็นที่มีอยู่ในไคลเอ็นต์

OAuth สำหรับเว็บหรือแอปพลิเคชันที่ติดตั้ง/อุปกรณ์เคลื่อนที่

OAuth สามารถใช้เป็นทางเลือกแทน AuthSub ได้และมีไว้สำหรับเว็บแอปพลิเคชัน OAuth จะคล้ายกับการใช้โหมดที่ปลอดภัยและลงทะเบียนของ AuthSub ว่าคำขอข้อมูลทั้งหมดต้องลงชื่อแบบดิจิทัลและต้องลงทะเบียนโดเมนของคุณ

ดูวิธีการรวม OAuth ไว้ในแอปพลิเคชันที่ติดตั้ง

กำลังดึงข้อมูลโทเค็นคำขอ

โปรดดูการใช้ OAuth กับไลบรารีไคลเอ็นต์ Google Data API

การให้สิทธิ์โทเค็นคำขอ

โปรดดูการใช้ OAuth กับไลบรารีไคลเอ็นต์ Google Data API

การอัปเกรดเป็นโทเค็นเพื่อการเข้าถึง

โปรดดูการใช้ OAuth กับไลบรารีไคลเอ็นต์ Google Data API

เคล็ดลับ: เมื่อแอปพลิเคชันได้รับโทเค็นเพื่อการเข้าถึง OAuth เรียบร้อยแล้ว จัดเก็บโทเค็นนั้นในฐานข้อมูลเพื่อเรียกคืนการใช้งานในภายหลัง โดยไม่จำเป็นต้องส่งผู้ใช้กลับผ่าน OAuth ในทุกการเรียกใช้แอปพลิเคชัน ใช้ client.auth_token = gdata.oauth.OAuthToken(TOKEN_STR, TOKEN_SECRET) เพื่อตั้งค่าโทเค็นที่มีอยู่ในไคลเอ็นต์

ClientLogin สำหรับแอปพลิเคชันที่ติดตั้ง/บนอุปกรณ์เคลื่อนที่

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

ดูวิธีการรวม ClientLogin ไว้ในแอปพลิเคชันที่ติดตั้ง

หากต้องการใช้ ClientLogin ให้เรียกใช้ ClientLogin() เมธอดของออบเจ็กต์ SitesClient ซึ่งรับค่ามาจาก GDClient ระบุอีเมลและ รหัสผ่านของผู้ใช้ที่คุณเป็นตัวแทนของลูกค้าในการส่งคำขอ เช่น

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

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

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการใช้ ClientLogin ในแอปพลิเคชัน Python ของคุณ โปรดดูที่การใช้ ClientLogin กับไลบรารีไคลเอ็นต์ Google Data API

กลับไปด้านบน

ฟีดของเว็บไซต์

คุณสามารถใช้ฟีดของเว็บไซต์เพื่อแสดงรายการ Google Sites ที่ผู้ใช้เป็นเจ้าของหรือมีสิทธิ์ดู นอกจากนี้ยังใช้เพื่อแก้ไขชื่อเว็บไซต์ที่มีอยู่ได้ด้วย สุดท้าย สำหรับโดเมน G Suite ยังสามารถใช้เพื่อสร้างและ/หรือคัดลอก ทั่วทั้งเว็บไซต์

แสดงรายการเว็บไซต์

หากต้องการแสดงเว็บไซต์ที่ผู้ใช้มีสิทธิ์เข้าถึง ให้ใช้เมธอด GetSiteFeed() ของไคลเอ็นต์ เมธอดจะมีตัวเลือก uri ที่คุณอาจใช้เพื่อระบุ 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

ตัวอย่างด้านบนจะพิมพ์ชื่อเว็บไซต์ ชื่อเว็บไซต์ ที่คัดลอกมา และ URI ของฟีด ACL

การสร้างเว็บไซต์ใหม่

หมายเหตุ: ฟีเจอร์นี้ใช้ได้กับโดเมน G Suite เท่านั้น

คุณจะจัดสรรเว็บไซต์ใหม่ได้โดยเรียกใช้เมธอด CreateSite() ของไลบรารี เช่นเดียวกับGetSiteFeed()ตัวช่วย CreateSite() ยังยอมรับ อาร์กิวเมนต์ที่ไม่บังคับ uri ซึ่งคุณสามารถใช้เพื่อระบุ 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 ดังนั้น URL ของเว็บไซต์จะเป็น 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

ประเด็นสำคัญ

  • คัดลอกได้เฉพาะไซต์และเทมเพลตของไซต์ที่ผู้ใช้ที่ได้รับการตรวจสอบสิทธิ์เป็นเจ้าของเท่านั้น
  • นอกจากนี้ ยังสามารถคัดลอกเทมเพลตของไซต์ได้อีกด้วย เว็บไซต์เป็นเทมเพลตหากช่อง "เผยแพร่เว็บไซต์นี้เป็นเทมเพลต" ในหน้าการตั้งค่า Google Sites แล้ว
  • คุณสามารถคัดลอกเว็บไซต์จากโดเมนอื่น กำลังรอให้คุณเป็นเจ้าของบนเว็บไซต์ต้นทาง

การอัปเดตข้อมูลเมตาของเว็บไซต์

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

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() ของ Lib ให้สิทธิ์เข้าถึงฟีดนี้:

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, URI แบบเต็มของรายการเนื้อหา หรือรหัสรายการเนื้อหา

ตัวอย่างนี้จะค้นหาฟีดเนื้อหา และดึงฟีดการแก้ไขสำหรับรายการเนื้อหาแรก

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() เพื่อสร้าง URI พื้นฐานของฟีดเนื้อหา

กำลังดึงข้อมูลประเภทรายการที่เจาะจง

หากต้องการดึงข้อมูลประเภทรายการเฉพาะ ให้ใช้พารามิเตอร์ kind สำหรับตัวอย่างนี้ ข้อมูลโค้ดนี้จะแสดงเฉพาะ attachment รายการ

kind = 'webpage'

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

หากต้องการแสดงผลมากกว่า 1 ประเภท ให้คั่น 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 Sites คุณสามารถใช้พารามิเตอร์ 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() อาร์กิวเมนต์แรกของเมธอดนี้ควรเป็นประเภทของหน้าเว็บที่จะสร้าง ตามด้วยชื่อ และเนื้อหา HTML ของหน้า

สำหรับรายการประเภทโหนดที่สนับสนุน โปรดดูพารามิเตอร์ kind ในคู่มืออ้างอิง

การสร้างรายการ / หน้าใหม่

ตัวอย่างนี้สร้าง webpage ใหม่ภายใต้ระดับบนสุด รวมทั้ง XHTML บางส่วนสำหรับเนื้อหาของหน้า และตั้งค่าชื่อส่วนหัวเป็น "ชื่อหน้าเว็บใหม่":

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

การสร้างรายการ/หน้าเว็บภายใต้เส้นทาง URL ที่กำหนดเอง

โดยค่าเริ่มต้น ตัวอย่างก่อนหน้านี้จะสร้างขึ้นภายใต้ URL http://sites.google.com/domainName/siteName/new-webpage-title และ มีส่วนหัวหน้าเป็น "ชื่อหน้าเว็บใหม่" กล่าวคือ ชื่อจะได้รับการแปลงเป็นรูปแบบ new-webpage-title สำหรับ URL หากต้องการปรับแต่งเส้นทาง URL ของหน้าเว็บ ให้ตั้งค่าพร็อพเพอร์ตี้ page_name ในรายการเนื้อหา ผู้ช่วย CreatePage() ระบุค่านี้เป็นอาร์กิวเมนต์คีย์เวิร์ดที่ไม่บังคับ

ตัวอย่างนี้สร้างหน้า filecabinet ใหม่ที่มีส่วนหัวเป็น "File Storage" แต่สร้างหน้านั้น ใต้ URL 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

เซิร์ฟเวอร์ใช้กฎตามลำดับความสำคัญต่อไปนี้ในการตั้งชื่อเส้นทาง URL ของหน้าเว็บ

  1. page_name หากมี ต้องเป็นไปตาม a-z, A-Z, 0-9, -, _
  2. title ต้องไม่เป็นค่าว่างหากไม่มีชื่อหน้า การปรับให้เป็นมาตรฐานคือการตัด + ยุบช่องว่างเป็น "-" และ นำอักขระที่ไม่ตรงกับ a-z, A-Z, 0-9, -, _ ออก

การสร้างหน้าย่อย

หากต้องการสร้างหน้าย่อย (หน้าย่อย) ในหน้าหลัก ให้ใช้อาร์กิวเมนต์คีย์เวิร์ด parent ของ CreatePage() 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!'

กำลังอัปโหลดไฟล์

API รองรับการอัปโหลดไฟล์แนบไปยังหน้าจัดการไฟล์หรือหน้าหลักเช่นเดียวกับใน Google Sites ต้องอัปโหลดไฟล์แนบ ไว้ในหน้าหลัก ดังนั้นคุณจะต้องตั้งค่าลิงก์หลักใน ContentEntry ที่ต้องการอัปโหลด ดูการสร้างหน้าเว็บย่อยสำหรับข้อมูลเพิ่มเติม

เมธอด UploadAttachment() ของไลบรารีของไคลเอ็นต์จะมีอินเทอร์เฟซสำหรับการอัปโหลดไฟล์แนบ

กำลังอัปโหลดไฟล์

ตัวอย่างนี้อัปโหลดไฟล์ PDF ไปยัง filecabinet ไฟล์แรกที่พบในฟีดเนื้อหาของผู้ใช้ ระบบสร้างไฟล์แนบที่มีชื่อว่า "คู่มือพนักงานใหม่" และคำอธิบาย (ไม่บังคับ) "แพ็กเก็ต 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 ข้อมูล ฟีเจอร์นี้คล้ายกับ 'Add file by URL' [เพิ่มไฟล์ด้วย URL] ใน UI ของ Google Sites

หมายเหตุ: สามารถสร้างไฟล์แนบบนเว็บได้โดยใช้ 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

กลับไปด้านบน



การอัปเดตเนื้อหา

การอัปเดตข้อมูลเมตาของหน้าเว็บและ/หรือเนื้อหา HTML

ข้อมูลเมตา (ชื่อ, pageName ฯลฯ) และเนื้อหาหน้าเว็บทุกประเภทสามารถแก้ไขได้โดย โดยใช้เมธอด Update() ของไคลเอ็นต์

ด้านล่างนี้คือตัวอย่างการอัปเดต listpage ด้วยการเปลี่ยนแปลงต่อไปนี้

  • แก้ไขชื่อเป็น "รายการที่อัปเดตแล้ว"
  • เนื้อหา HTML ของหน้าเว็บได้รับการอัปเดตเป็น "เนื้อหา HTML ที่อัปเดตแล้ว"
  • ส่วนหัวของคอลัมน์แรกของรายการเปลี่ยนเป็น "เจ้าของ"
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 Sites ให้ดึงข้อมูลรายการเนื้อหาก่อน แล้วจึงเรียกใช้เมธอด Delete() ของไคลเอ็นต์

client.Delete(content_entry)

คุณยังส่งผ่านเมธอด Delete() ที่ลิงก์ edit ของรายการเนื้อหาและ/หรือบังคับการลบได้ดังนี้

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

ดูข้อมูลเพิ่มเติมเกี่ยวกับ ETag ได้จากคู่มืออ้างอิงสำหรับ Google Data API

กลับไปด้านบน



กำลังดาวน์โหลดไฟล์แนบ

แต่ละรายการของ attachment จะมีลิงก์เนื้อหา src ซึ่งใช้เพื่อดาวน์โหลดเนื้อหาของไฟล์ได้ ไคลเอ็นต์ Sites มีวิธีช่วยเหลือในการเข้าถึงและดาวน์โหลดไฟล์จากลิงก์นี้: DownloadAttachment() โดยจะยอมรับ gdata.sites.data.ContentEntry หรือ URI การดาวน์โหลดสำหรับอาร์กิวเมนต์แรกและเส้นทางไฟล์ที่บันทึกไฟล์แนบ เป็นรายการที่ 2

ตัวอย่างนี้ดึงรายการไฟล์แนบบางอย่าง (โดยค้นหาลิงก์ 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

ภาพรวมของสิทธิ์การแชร์ (ACL)

รายการ ACL แต่ละรายการในฟีด ACL แสดงบทบาทการเข้าถึงของเอนทิตีหนึ่งๆ ซึ่งอาจเป็นผู้ใช้ กลุ่มผู้ใช้ โดเมน หรือการเข้าถึงเริ่มต้น (ซึ่งเป็นเว็บไซต์สาธารณะ) ระบบจะแสดงรายการสำหรับบุคคลที่มีสิทธิ์การเข้าถึงอย่างชัดแจ้งเท่านั้น โดยจะแสดง 1 รายการ สำหรับแต่ละอีเมลใน "ผู้ที่มีสิทธิ์เข้าถึง" ในหน้าจอการแชร์ของ UI ของ Google Sites ดังนั้นระบบจะไม่แสดงผู้ดูแลระบบโดเมน แม้ว่าพวกเขาจะมีสิทธิ์เข้าถึงเว็บไซต์โดยปริยายก็ตาม

บทบาท

องค์ประกอบบทบาทแสดงถึงระดับการเข้าถึงที่เอนทิตีหนึ่งๆ มีได้ ค่าที่เป็นไปได้ขององค์ประกอบ gAcl:role มีอยู่ 4 ค่า ได้แก่

  • reader — ผู้มีสิทธิ์อ่าน (เทียบเท่ากับสิทธิ์การเข้าถึงระดับอ่านอย่างเดียว)
  • writer — ผู้ทำงานร่วมกัน (เทียบเท่ากับสิทธิ์การอ่าน/เขียน)
  • owner - โดยทั่วไปคือผู้ดูแลระบบไซต์ (เทียบเท่ากับสิทธิ์การอ่าน/เขียน)

ขอบเขต

องค์ประกอบขอบเขตแสดงถึงเอนทิตีที่มีระดับการเข้าถึงนี้ องค์ประกอบ gAcl:scope ที่เป็นไปได้มี 4 ประเภทดังนี้

  • user — ค่าที่อยู่อีเมล เช่น "user@gmail.com"
  • group — ที่อยู่อีเมลของกลุ่ม Google เช่น "group@domain.com"
  • domain — ชื่อโดเมน G Suite เช่น "domain.com"
  • default — มีขอบเขตประเภท "ค่าเริ่มต้น" ที่เป็นไปได้เพียง 1 ขอบเขตซึ่งไม่มีค่า (เช่น <gAcl:scope type="default">) ขอบเขตเฉพาะนี้ควบคุมการเข้าถึงที่ผู้ใช้มีโดยค่าเริ่มต้น บนเว็บไซต์สาธารณะ

หมายเหตุ: โดเมนมีค่า gAcl:role ไม่ได้ ตั้งค่าเป็น "เจ้าของ" คุณก็เป็น ผู้อ่านหรือผู้เขียนได้เท่านั้น

กำลังเรียกฟีด ACL

คุณใช้ฟีด ACL เพื่อควบคุมสิทธิ์การแชร์ของเว็บไซต์ได้ และสามารถดึงข้อมูลโดยใช้เมธอด GetAclFeed()

ตัวอย่างต่อไปนี้จะดึงข้อมูลฟีด ACL ของเว็บไซต์ที่ตั้งค่าไว้ในออบเจ็กต์ 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 ของ URL

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

การแชร์เว็บไซต์

หมายเหตุ: ACL การแชร์บางรายการอาจเป็นไปได้เฉพาะเมื่อมีการกำหนดค่าโดเมน เพื่ออนุญาตสิทธิ์ดังกล่าว (เช่น มีการเปิดใช้การแชร์ภายนอกโดเมนสำหรับโดเมน G Suite เป็นต้น)

หากต้องการแชร์เว็บไซต์จาก Google Sites โดยใช้ API ให้สร้าง gdata.sites.gdata.AclEntry ด้วย gdata.acl.data.AclScope และ gdata.acl.data.AclRole โปรดดู ส่วนภาพรวมฟีด ACL สำหรับ AclScope ที่เป็นไปได้ และค่า 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 สามารถแชร์เว็บไซต์ทั้งไซต์กับ domain1.com ได้เท่านั้น ไม่สามารถใช้ domain2.com เว็บไซต์ที่ ไม่ได้โฮสต์บนโดเมน G Suite (เช่น http://sites.google.com/site/siteB) ไม่สามารถเชิญโดเมนได้

การแก้ไขสิทธิ์การแชร์

สำหรับสิทธิ์การแชร์ที่มีอยู่แล้วในเว็บไซต์ ให้ดึงข้อมูล AclEntry ที่เป็นปัญหาก่อน และแก้ไขสิทธิ์ ตามต้องการ แล้วเรียกเมธอด Update() ของไคลเอ็นต์เพื่อแก้ไข ACL ในเซิร์ฟเวอร์

ตัวอย่างนี้แก้ไข 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)

ดูข้อมูลเพิ่มเติมเกี่ยวกับ ETag ได้จากคู่มืออ้างอิงสำหรับ Google Data API

กำลังลบสิทธิ์การแชร์

หากต้องการนำสิทธิ์การแชร์ออก ให้เรียกข้อมูล AclEntry ก่อน จากนั้นจึงเรียกใช้เมธอด Delete() ของไคลเอ็นต์

client.Delete(acl_entry)

คุณยังส่งผ่านเมธอด Delete() ที่ลิงก์ edit ของรายการ ACL และ/หรือบังคับการลบได้ดังนี้

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

ดูข้อมูลเพิ่มเติมเกี่ยวกับ ETag ได้จากคู่มืออ้างอิงสำหรับ Google Data API

กลับไปด้านบน

หัวข้อพิเศษ

การดึงข้อมูลฟีดหรือรายการอีกครั้ง

ถ้าต้องการเรียกฟีดหรือรายการที่เคยดึงข้อมูลมาก่อน คุณสามารถปรับปรุงประสิทธิภาพได้โดยบอก เซิร์ฟเวอร์จะส่งรายการหรือรายการได้ต่อเมื่อมีการเปลี่ยนแปลงนับตั้งแต่ที่คุณดึงข้อมูลมาครั้งล่าสุดเท่านั้น

หากต้องการดึงข้อมูลแบบมีเงื่อนไขประเภทนี้ ให้ส่งค่า ETag ไปยัง GetEntry() ตัวอย่างเช่น หากคุณมีออบเจ็กต์ 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 รายการ ETag จะจับคู่เวอร์ชันในเซิร์ฟเวอร์ ซึ่งหมายความว่าคุณมีสำเนาล่าสุด แต่หากลูกค้า/ผู้ใช้รายอื่นทำการแก้ไข รายการใหม่จะส่งคืนใน entry และจะไม่มีข้อยกเว้น

ดูข้อมูลเพิ่มเติมเกี่ยวกับ ETag ได้จากคู่มืออ้างอิงสำหรับ Google Data API

กลับไปด้านบน