Przewodnik po protokołów

Interfejs API klasycznej wersji Witryn Google umożliwia aplikacjom uzyskiwanie dostępu do treści w Witrynie Google, publikowanie ich i modyfikowanie. Dodatkowo aplikacja może wysyłać prośby o listę ostatniej aktywności, pobierać historię zmian oraz przesyłać i pobierać załączniki i pliki.

Odbiorcy

Zakładamy, że znasz ogólne założenia protokołu interfejsów API danych Google.

Ten dokument jest przeznaczony dla programistów, którzy chcą pisać aplikacje klienckie, które mogą wchodzić w interakcje z Witrynami Google. Zawiera on serię przykładów podstawowych interakcji z interfejsem Data API przy użyciu nieprzetworzonego kodu XML/HTTP wraz z wyjaśnieniami. Po przeczytaniu tego dokumentu możesz dowiedzieć się więcej o interakcji z interfejsem API za pomocą naszych bibliotek klienta. W tym celu zapoznaj się z przykładami w poszczególnych językach, które znajdziesz w innych przewodnikach na pasku nawigacyjnym po lewej stronie.

Informacje zawarte w tym przewodniku znajdziesz w przewodniku referencyjnym.

Autoryzowanie zapytań

Gdy Twoja aplikacja żąda niepublicznych danych użytkownika, musi zawierać token autoryzacji. Token stanowi też dla Google identyfikator aplikacji.

Informacje o protokołach autoryzacji

Twoja aplikacja musi autoryzować żądania za pomocą protokołu OAuth 2.0. Inne protokoły nie są obsługiwane. Jeśli aplikacja używa funkcji Zaloguj się przez Google, niektórymi aspektami autoryzacji nie musisz się zajmować.

Autoryzowanie żądań za pomocą protokołu OAuth 2.0

Żądania wysyłane do interfejsu Google Sites Data API dotyczące niepublicznych danych użytkownika muszą być autoryzowane przez uwierzytelnionego użytkownika.

Szczegóły procesu autoryzacji z użyciem protokołu OAuth 2.0 różnią się nieznacznie w zależności od rodzaju projektowanej aplikacji. Do większości typów aplikacji ma zastosowanie ten ogólny proces:

  1. Gdy tworzysz aplikację, rejestrujesz ją, korzystając z konsoli interfejsów API Google. Następnie Google przekazuje informacje, które są potrzebne później, takie jak identyfikator klienta i tajny klucz klienta.
  2. Aktywuj interfejs Google Sites Data API w Konsoli interfejsów API Google. (jeśli interfejsu API nie ma na liście w konsoli, pomijasz ten krok).
  3. Gdy Twoja aplikacja potrzebuje dostępu do danych użytkownika, prosi Google o konkretny zakres dostępu.
  4. Google wyświetla użytkownikowi ekran zgody z prośbą o autoryzowanie dostępu aplikacji do niektórych danych.
  5. Jeśli użytkownik wyrazi zgodę, Google przekazuje Twojej aplikacji ważny przez krótki czas token dostępu.
  6. Aplikacja żąda danych użytkownika i dołącza do żądania token dostępu.
  7. Jeśli Google uzna, że żądanie i token są prawidłowe, przesyła dane, o które prosisz.

Niektóre procesy obejmują dodatkowe kroki, takie jak wykorzystanie tokenów odświeżania do uzyskania nowych tokenów dostępu. Szczegółowe informacje o procesach obowiązujących w przypadku różnych typów aplikacji znajdziesz w dokumencie Google na temat protokołu OAuth 2.0.

Oto informacje o zakresie protokołu OAuth 2.0 dla interfejsu Google Sites Data API:

https://sites.google.com/feeds/

Aby poprosić o dostęp przy użyciu protokołu OAuth 2.0, aplikacja potrzebuje danych z zakresu oraz informacji przekazywanych przez Google po zarejestrowaniu aplikacji (takich jak identyfikator klienta i tajny klucz klienta).

Powrót do góry

Określanie wersji

Każde żądanie wysyłane do interfejsu Google Sites Data API powinno określać wersję 1.4. Aby określić numer wersji, użyj nagłówka HTTP GData-Version:

GData-Version: 1.4

Jeśli nie możesz ustawić nagłówków HTTP, możesz też określić v=1.4 jako parametr zapytania w adresie URL. Jednak w miarę możliwości preferowany jest nagłówek HTTP.

Uwaga: biblioteki klienta automatycznie dostarczają odpowiednie nagłówki wersji, więc nie używaj parametru zapytania v=1.4, gdy korzystasz z biblioteki klienta.

Powrót do góry

Plik danych witryny

Plik danych witryny może służyć do wyświetlania listy witryn w Witrynach Google, które należą do użytkownika lub do których ma on uprawnienia do wyświetlania, a także do modyfikowania tytułu istniejącej witryny. W przypadku domen G Suite można go też używać do tworzenia lub kopiowania całej witryny.

Witryny z informacjami o produktach

Aby wyświetlić listę witryn, do których użytkownik ma dostęp, wyślij uwierzytelnione żądanie GET na ten adres URL:

https://sites.google.com/feeds/site/domainName
Parametr pliku danychOpis
domainNamesite” lub domena Twojej domeny hostowanej w G Suite (np. example.com).

Odpowiedź będzie zawierać plik danych z listą witryn:

GET /feeds/site/domainName HTTP/1.1
Host: sites.google.com
GData-Version: 1.4
Authorization: <your authorization header here>

HTTP/1.1 200 OK

<feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/"
    xmlns:gAcl="http://schemas.google.com/acl/2007" xmlns:sites="http://schemas.google.com/sites/2008"
    xmlns:gs="http://schemas.google.com/spreadsheets/2006" xmlns:dc="http://purl.org/dc/terms"
    xmlns:batch="http://schemas.google.com/gdata/batch" xmlns:gd="http://schemas.google.com/g/2005"
    xmlns:thr="http://purl.org/syndication/thread/1.0">
<id>https://sites.google.com/feeds/site/site</id>
<updated>2009-12-02T17:47:34.406Z</updated>
<title>Site</title>
<link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"
    href="https://sites.google.com/feeds/site/site"/>
<link rel="http://schemas.google.com/g/2005#post" type="application/atom+xml"
    href="https://sites.google.com/feeds/feeds/site/domainName"/>
<link rel="self" type="application/atom+xml" href="https://sites.google.com/feeds/site/domainName"/>
<link rel="next" type="application/atom+xml" href="https://sites.google.com/feeds/site/domainName/?start-index=2"/>
<generator version="1" uri="http://sites.google.com/">Google Sites</generator>
<openSearch:startIndex>1</openSearch:startIndex>
<entry gd:etag="W/&quot;CkUAQH4_eil7I2A9WxNaFk4.&quot;">
  <id>https://sites.google.com/feeds/site/site/myTestSite</id>
  <updated>2009-12-01T01:17:21.042Z</updated>
  <app:edited xmlns:app="http://www.w3.org/2007/app">2009-12-01T01:17:21.042Z</app:edited>
  <title>myTestSite</title>
  <summary/>
  <link rel="alternate" type="text/html" href="http://sites.google.com/site/myTestSite/"/>
  <link rel="http://schemas.google.com/acl/2007#accessControlList" type="application/atom+xml"
      href="https://sites.google.com/feeds/acl/site/domainName/myTestSite"/>
  <link rel="self" type="application/atom+xml" href="https://sites.google.com/feeds/site/domainName/myTestSite"/>
  <link rel="edit" type="application/atom+xml" href="https://sites.google.com/feeds/site/domainName/myTestSite"/>
  <sites:siteName>myTestSite</sites:siteName>
  <sites:theme>default</sites:theme>
</entry>
<entry gd:etag="W/&quot;DkQGQHczfA9WxNaFk4.&quot;">
  <id>https://sites.google.com/feeds/site/domainName/myOtherTestSite</id>
  <updated>2009-12-01T02:25:21.987Z</updated>
  <app:edited xmlns:app="http://www.w3.org/2007/app">2009-12-01T02:25:21.987Z</app:edited>
  <title>myOtherTestSite</title>
  <summary>A new site to hold memories</summary>
  <category scheme="http://schemas.google.com/sites/2008#tag" term="Memories Site"/>
  <link rel="alternate" type="text/html" href="http://sites.google.com/site/myOtherTestSite"/>
  <link rel="http://schemas.google.com/acl/2007#accessControlList" type="application/atom+xml"
      href="https://sites.google.com/feeds/acl/site/domainName/myOtherTestSite"/>
  <link rel="self" type="application/atom+xml" href="https://sites.google.com/feeds/site/domainName/myOtherTestSite"/>
  <link rel="edit" type="application/atom+xml" href="https://sites.google.com/feeds/site/domainName/myOtherTestSite"/>
  <sites:siteName>myOtherTestSite</sites:siteName>
  <sites:theme>iceberg</sites:theme>
</entry>
...
</feed>

Witryny są wymienione w kolejności alfabetycznej.

Tworzenie nowych witryn

Uwaga: ta funkcja jest dostępna tylko w domenach G Suite.

Nowe witryny można udostępniać, wysyłając żądanie HTTP POST do pliku danych witryny, np.:

POST /feeds/site/example.com HTTP/1.1
Host: sites.google.com
GData-Version: 1.4
Authorization: <your authorization header here>

<entry xmlns="http://www.w3.org/2005/Atom" xmlns:sites="http://schemas.google.com/sites/2008">
  <title>Source Site</title>
  <summary>A new site to hold memories</summary>
  <sites:theme>slate</sites:theme>
</entry>

Powyższa prośba spowoduje utworzenie nowej Witryny Google z motywem „slate” w domenie G Suite example.com. Adres URL witryny to http://sites.google.com/a/example.com/source-site/.

Jeśli witryna zostanie utworzona, serwer odpowie kodem 201 Created. Wpis odpowiedzi będzie zawierać elementy dodane przez serwer, takie jak link do witryny, link do pliku danych listy ACL witryny, nazwę witryny, tytuł i podsumowanie.

<entry xmlns="http://www.w3.org/2005/Atom" xmlns:gAcl="http://schemas.google.com/acl/2007"
    xmlns:sites="http://schemas.google.com/sites/2008" xmlns:gs="http://schemas.google.com/spreadsheets/2006"
    xmlns:dc="http://purl.org/dc/terms" xmlns:batch="http://schemas.google.com/gdata/batch"
    xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0"
    gd:etag="W/&quot;DEECR38l7I2A9WxNaF0Q.&quot;">
  <id>https://sites.google.com/feeds/site/example.com/source-site</id>
  <updated>2009-12-02T23:31:06.184Z</updated>
  <app:edited xmlns:app="http://www.w3.org/2007/app">2009-12-02T23:31:06.184Z</app:edited>
  <title>New Test Site</title>
  <summary>A new site to hold memories</summary>
  <link rel="alternate" type="text/html" href="http://sites.google.com/a/example.com/source-site/"/>
  <link rel="http://schemas.google.com/acl/2007#accessControlList" type="application/atom+xml"
      href="https://sites.google.com/feeds/acl/site/example.com/source-site"/>
  <link rel="self" type="application/atom+xml" href="https://sites.google.com/feeds/site/example.com/source-site"/>
  <link rel="edit" type="application/atom+xml" href="https://sites.google.com/feeds/site/example.com/source-site"/>
  <sites:siteName>source-site</sites:siteName>
  <sites:theme>slate</sites:theme>
</entry>

Kopiowanie witryny

Uwaga: ta funkcja jest dostępna tylko w domenach G Suite.

Istniejącą witrynę można zduplikować w taki sam sposób jak tworzenie nowej witryny. W POST wpisie Atom żądania umieść element <link> z atrybutem rel='source' wskazującym kanał witryny, którą chcesz skopiować. Ten link będzie dostępny w każdej skopiowanej witrynie. Oto przykład duplikowania witryny:

POST /feeds/site/example.com HTTP/1.1
Host: sites.google.com
GData-Version: 1.4
Authorization: <your authorization header here>

<entry xmlns="http://www.w3.org/2005/Atom">
  <link rel="http://schemas.google.com/sites/2008#source" type="application/atom+xml"
      href="https://sites.google.com/feeds/site/example.com/source-site"/>
  <title>Copy of New Test Site</title>
  <summary>A newer site to hold memories</summary>
</entry>

Powyższa prośba spowoduje skopiowanie witryny pod adresem http://sites.google.com/a/example.com/source-site/.

Ważne kwestie:

  • Można kopiować tylko witryny i szablony witryn, których właścicielem jest uwierzytelniony użytkownik.
  • Możesz też skopiować szablon witryny. Witryna jest szablonem, jeśli na stronie ustawień Witryn Google zaznaczona jest opcja „Opublikuj tę witrynę jako szablon”.
  • Możesz skopiować witrynę z innej domeny, o ile jesteś właścicielem witryny źródłowej.

Aktualizowanie metadanych witryny

Aby zaktualizować tytuł lub podsumowanie witryny, wyślij żądanie HTTP PUT do linku edit wpisu witryny. Na przykład poniższy kod zaktualizuje tytuł poprzedniej witryny do New Test Site2, a jej opis do Newer description.

PUT /feeds/site/example.com/source-site HTTP/1.1
Host: sites.google.com
GData-Version: 1.4
Authorization: <your authorization header here>

<entry xmlns="http://www.w3.org/2005/Atom" xmlns:gAcl="http://schemas.google.com/acl/2007"
    xmlns:sites="http://schemas.google.com/sites/2008" xmlns:gs="http://schemas.google.com/spreadsheets/2006"
    xmlns:dc="http://purl.org/dc/terms" xmlns:batch="http://schemas.google.com/gdata/batch"
    xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0"
    gd:etag="W/&quot;DEECR38l7I2A9WxNaF0Q.&quot;">
  <id>https://sites.google.com/feeds/site/example.com/source-site</id>
  <updated>2009-12-02T23:31:06.184Z</updated>
  <app:edited xmlns:app="http://www.w3.org/2007/app">2009-12-02T23:31:06.184Z</app:edited>
  <title>New Test Site2</title>
  <summary>Newer description</summary>
  <category scheme="http://schemas.google.com/sites/2008#tag" term="Category"/>
  <link rel="alternate" type="text/html" href="http://sites.google.com/a/example.com/source-site/"/>
  <link rel="http://schemas.google.com/acl/2007#accessControlList" type="application/atom+xml"
      href="https://sites.google.com/feeds/acl/site/example.com/source-site"/>
  <link rel="self" type="application/atom+xml" href="https://sites.google.com/feeds/site/example.com/source-site"/>
  <link rel="edit" type="application/atom+xml" href="https://sites.google.com/feeds/site/example.com/source-site"/>
  <sites:siteName>source-site</sites:siteName>
</entry>

Dodawanie kategorii

Uwaga: ta funkcja jest dostępna tylko w domenach G Suite.

Witryny G Suite w Twojej domenie zawierają metadane kategorii, które są przydatne do kategoryzowania witryn w domenie. Aby dodać lub zaktualizować metadane kategorii, wyślij żądanie HTTP PUT do linku edit wpisu w witrynie, które zawiera tag category. Zobacz pogrubiony wiersz w tym przykładzie:

PUT /feeds/site/example.com/source-site HTTP/1.1
Host: sites.google.com
GData-Version: 1.4
Authorization: <your authorization header here>

<entry xmlns="http://www.w3.org/2005/Atom" xmlns:gAcl="http://schemas.google.com/acl/2007"
    xmlns:sites="http://schemas.google.com/sites/2008" xmlns:gs="http://schemas.google.com/spreadsheets/2006"
    xmlns:dc="http://purl.org/dc/terms" xmlns:batch="http://schemas.google.com/gdata/batch"
    xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0"
    gd:etag="W/&quot;DEECR38l7I2A9WxNaF0Q.&quot;">
  <id>https://sites.google.com/feeds/site/example.com/source-site</id>
  <updated>2009-12-02T23:31:06.184Z</updated>
  <app:edited xmlns:app="http://www.w3.org/2007/app">2009-12-02T23:31:06.184Z</app:edited>
  <title>My Team website</title>
  <summary>This site contains contact information and a summary of major efforts our team owns</summary>
  <category scheme="http://schemas.google.com/sites/2008#tag" term="Team Site"/>
  <link rel="alternate" type="text/html" href="http://sites.google.com/a/example.com/my-team-site/"/>
  <link rel="http://schemas.google.com/acl/2007#accessControlList" type="application/atom+xml"
      href="https://sites.google.com/feeds/acl/site/example.com/my-team-site"/>
  <link rel="self" type="application/atom+xml" href="https://sites.google.com/feeds/site/example.com/my-team-site"/>
  <link rel="edit" type="application/atom+xml" href="https://sites.google.com/feeds/site/example.com/my-team-site"/>
  <sites:siteName>my-team-site</sites:siteName>
</entry>

Ten przykład pokazuje edytowanie istniejącej witryny i dodawanie kategorii „Witryna zespołu”.

Możesz też dodać kilka kategorii, dodając kolejne tagi <category>. Zobacz pogrubione wiersze w tym przykładzie:

PUT /feeds/site/example.com/my-team-site HTTP/1.1
Host: sites.google.com
GData-Version: 1.4
Authorization: <your authorization header here>

<entry xmlns="http://www.w3.org/2005/Atom" xmlns:gAcl="http://schemas.google.com/acl/2007"
    xmlns:sites="http://schemas.google.com/sites/2008" xmlns:gs="http://schemas.google.com/spreadsheets/2006"
    xmlns:dc="http://purl.org/dc/terms" xmlns:batch="http://schemas.google.com/gdata/batch"
    xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0"
    gd:etag="W/&quot;DEECR38l7I2A9WxNaF0Q.&quot;">
  <id>https://sites.google.com/feeds/site/example.com/my-team-site</id>
  <updated>2009-12-02T23:31:06.184Z</updated>
  <app:edited xmlns:app="http://www.w3.org/2007/app">2009-12-02T23:31:06.184Z</app:edited>
  <title>My Team website</title>
  <summary>This site contains contact information and a summary of major efforts our team owns</summary>
  <category scheme="http://schemas.google.com/sites/2008#tag" term="Team Site/">
  <category scheme="http://schemas.google.com/sites/2008#tag" term="Legal Department/">
  <link rel="alternate" type="text/html" href="http://sites.google.com/a/example.com/my-team-site/"/>
  <link rel="http://schemas.google.com/acl/2007#accessControlList" type="application/atom+xml"
      href="https://sites.google.com/feeds/acl/site/example.com/my-team-site"/>
  <link rel="self" type="application/atom+xml" href="https://sites.google.com/feeds/site/example.com/my-team-site"/>
  <link rel="edit" type="application/atom+xml" href="https://sites.google.com/feeds/site/example.com/my-team-site"/>
  <sites:siteName>my-team-site</sites:siteName>
</entry>

W tym przykładzie dodajemy 2 kategorie: „Witryna zespołu” i „Dział prawny”.

Mapowania adresów internetowych

Mapowania adresów internetowych umożliwiają użytkownikom Witryn mapowanie własnych domen na Witrynę Google. Na przykład zamiast http://sites.google.com/a/domain.com/mysite możesz użyć http://www.mydomainsite.com. W zależności od tego, gdzie jest hostowana Twoja witryna, możesz ręcznie modyfikować mapowania adresów internetowych witryny. Więcej informacji znajdziesz w tym artykule w Centrum pomocy.

Pobieranie mapowań adresu internetowego witryny

Aby zwrócić mapowania adresu internetowego witryny, pobierz wpis/plik danych witryny z parametrem with-mappings=true:

GET /feeds/site/domainName?with-mappings=true HTTP/1.1
Host: sites.google.com
GData-Version: 1.4
Authorization: <your authorization header here>

HTTP/1.1 200 OK

<feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/"
    xmlns:gAcl="http://schemas.google.com/acl/2007" xmlns:sites="http://schemas.google.com/sites/2008"
    xmlns:gs="http://schemas.google.com/spreadsheets/2006" xmlns:dc="http://purl.org/dc/terms"
    xmlns:batch="http://schemas.google.com/gdata/batch" xmlns:gd="http://schemas.google.com/g/2005"
    xmlns:thr="http://purl.org/syndication/thread/1.0">
...
<entry gd:etag="W/&quot;DkQGQHczfA9WxNaFk4.&quot;">
  <id>https://sites.google.com/feeds/site/domainName/myOtherTestSite</id>
  <updated>2009-12-01T02:25:21.987Z</updated>
  <app:edited xmlns:app="http://www.w3.org/2007/app">2009-12-01T02:25:21.987Z</app:edited>
  <title>myOtherTestSite</title>
  <summary>A new site to hold memories</summary>
  <link rel="alternate" type="text/html" href="http://sites.google.com/site/myOtherTestSite"/>
  <link rel="http://schemas.google.com/acl/2007#accessControlList" type="application/atom+xml"
      href="https://sites.google.com/feeds/acl/site/domainName/myOtherTestSite"/>
  <link rel="self" type="application/atom+xml" href="https://sites.google.com/feeds/site/domainName/myOtherTestSite"/>
  <link rel="edit" type="application/atom+xml" href="https://sites.google.com/feeds/site/domainName/myOtherTestSite"/>
  <link rel='webAddressMapping' href='http://www.mysitemapping.com'>
  <link rel='webAddressMapping' href='http://www.mysitemapping2.com'>
  <link rel='webAddressMapping' href='http://www.myothermapping.org'>
</entry>
...
</feed>

Istniejące mapowania będą wyświetlane jako link z atrybutem rel='webAddressMapping'. Na przykład w powyższym przykładzie są 3 webAddressMapping, które prowadzą do witryny http://sites.google.com/site/myOtherTestSite.

Modyfikowanie mapowań adresów internetowych

Uwaga: podczas pracy z mapowaniami adresów internetowych wszystkie operacje GET/POST/PUT powinny określać parametr with-mappings=true. Jeśli parametru nie ma, w przypadku wpisów w witrynie nie będą zwracane wartości webAddressMappings (GET) ani nie będą one brane pod uwagę podczas aktualizowania lub usuwania (PUT) mapowań z wpisu.

Aby dodać, zaktualizować lub usunąć mapowanie, po prostu określ, zmień lub usuń taki link podczas tworzenia nowych witryn lub aktualizowania metadanych witryny. Parametr with-mappings=true musi być uwzględniony w identyfikatorze URI pliku danych o witrynie. Uwaga: aby zaktualizować mapowania adresów, musisz być administratorem witryny lub administratorem domeny w przypadku witryny hostowanej w G Suite.

Na przykład poniższa prośba aktualizuje mapowanie http://www.mysitemapping.com na http://www.my-new-sitemapping.com i usuwa http://www.mysitemapping2.com, pomijając link w pozycji:

PUT /feeds/site/domainName?with-mappings=true HTTP/1.1
Host: sites.google.com
GData-Version: 1.4
Authorization: <your authorization header here>

<entry gd:etag="W/&quot;DkQGQHczfA9WxNaFk4.&quot;">
  <id>https://sites.google.com/feeds/site/domainName/myOtherTestSite</id>
  <updated>2009-12-01T02:25:21.987Z</updated>
  <app:edited xmlns:app="http://www.w3.org/2007/app">2009-12-01T02:25:21.987Z</app:edited>
  <title>myOtherTestSite</title>
  <summary>A new site to hold memories</summary>
  <link rel="alternate" type="text/html" href="http://sites.google.com/site/myOtherTestSite"/>
  <link rel="http://schemas.google.com/acl/2007#accessControlList" type="application/atom+xml"
      href="https://sites.google.com/feeds/acl/site/domainName/myOtherTestSite"/>
  <link rel="self" type="application/atom+xml" href="https://sites.google.com/feeds/site/domainName/myOtherTestSite"/>
  <link rel="edit" type="application/atom+xml" href="https://sites.google.com/feeds/site/domainName/myOtherTestSite"/>
  <link rel='webAddressMapping' href='www.my-new-sitemapping.com'>
  <!-- missing mapping2 will be deleted -->
  <link rel='webAddressMapping' href='http://www.myothermapping.org'>
</entry>

Pamiętaj, że mapowania adresów internetowych można też określić podczas tworzenia lub kopiowania witryny.

Powrót do góry

Obszar aktywności

Aby pobrać najnowszą aktywność (zmiany) w witrynie, pobierz plik danych o aktywności. Każdy wpis w kanale aktywności zawiera informacje o zmianie wprowadzonej w witrynie.

Aby wysłać zapytanie do karty aktywności, wyślij żądanie HTTP GET na adres URL karty aktywności:

https://sites.google.com/feeds/activity/domainName/siteName
Parametr pliku danychOpis
domainNamesite” lub domena Twojej domeny hostowanej w G Suite (np. example.com).
siteNameNazwa przestrzeni internetowej Twojej witryny, którą znajdziesz w adresie URL witryny (np. myCoolSite).

Przykładowe żądanie i odpowiedź:

GET /feeds/activity/site/siteName HTTP/1.1
Host: sites.google.com
GData-Version: 1.4
Authorization: <your authorization header here>

HTTP/1.1 200 OK

<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/">
<id>https://sites.google.com/feeds/activity/site/siteName</id>
<updated>2009-09-10T05:24:23.120Z</updated>
<title>Activity</title>
<link rel="alternate" type="text/html" href="http://sites.google.com/site/siteName/system/app/pages/recentChanges"/>
<link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"
  href="https://sites.google.com/feeds/activity/site/siteName"/>
<link rel="self" type="application/atom+xml"
  href="https://sites.google.com/feeds/activity/site/siteName"/>
<generator version="1" uri="http://sites.google.com">Google Sites</generator>
<openSearch:startIndex>1</openSearch:startIndex>
<entry xmlns:gd="http://schemas.google.com/g/2005" gd:etag="W/&quot;CU4GQ3szfSl7ImA9WxNRFUg.&quot;">
<id>https://sites.google.com/feeds/activity/site/siteName/940375996952876062</id>
<updated>2009-09-10T03:38:42.585Z</updated>
<category scheme="http://schemas.google.com/g/2005#kind" term="http://schemas.google.com/sites/2008#deletion" label="deletion"/>
<title>home</title>
<summary type="xhtml">
  <div xmlns="http://www.w3.org/1999/xhtml">User deleted <a href="http://sites.google.com/site/siteName/home">home</a>
</div>
</summary>
<link rel="http://schemas.google.com/sites/2008#revision" type="application/atom+xml"
  href="https://sites.google.com/feeds/revision/site/siteName/5409745539831916487"/>
<link rel="http://schemas.google.com/sites/2008#current" type="application/atom+xml"
  href="https://sites.google.com/feeds/content/site/siteName/5409745539831916487"/>
<link rel="self" type="application/atom+xml"
  href="https://sites.google.com/feeds/activity/site/siteName/940375996952876062"/>
<author>
  <name>User</name>
  <email>user@gmail.com</email>
</author>
</entry>
<entry xmlns:gd="http://schemas.google.com/g/2005" gd:etag="W/&quot;CU8DQn45fyl7ImA9WxNRFUg.&quot;">
  <id>https://sites.google.com/feeds/activity/site/siteName/7165439066235480082</id>
  <updated>2009-09-10T03:37:53.027Z</updated>
  <category scheme="http://schemas.google.com/g/2005#kind"
    term="http://schemas.google.com/sites/2008#edit" label="edit"/>
  <title>home</title>
  <summary type="xhtml">
    <div xmlns="http://www.w3.org/1999/xhtml">User2 edited <a href="http://sites.google.com/site/siteName/home">home</a>
  </div>
  </summary>
  <link rel="http://schemas.google.com/sites/2008#revision" type="application/atom+xml"
    href="https://sites.google.com/feeds/revision/site/siteName/5409745539831916487"/>
  <link rel="http://schemas.google.com/sites/2008#current" type="application/atom+xml"
    href="https://sites.google.com/feeds/content/site/siteName/5409745539831916487"/>
  <link rel="self" type="application/atom+xml"
    href="https://sites.google.com/feeds/activity/site/siteName/7165439066235480082"/>
  <author>
    <name>User</name>
    <email>user@gmail.com</email>
  </author>
</entry>
<entry xmlns:gd="http://schemas.google.com/g/2005" gd:etag="W/&quot;CU8AR3s4cSl7ImA9WxNRFUg.&quot;">
  <id>https://sites.google.com/feeds/activity/site/siteName/127448462987345884</id>
  <updated>2009-09-10T03:37:26.539Z</updated>
  <category scheme="http://schemas.google.com/g/2005#kind"
    term="http://schemas.google.com/sites/2008#creation" label="creation"/>
  <title>home</title>
  <summary type="xhtml">
    <div xmlns="http://www.w3.org/1999/xhtml">User3 created <a href="http://sites.google.com/site/siteName/home">home</a>
  </div>
  </summary>
  <link rel="http://schemas.google.com/sites/2008#revision" type="application/atom+xml"
    href="https://sites.google.com/feeds/revision/site/siteName/5409745539831916487"/>
  <link rel="http://schemas.google.com/sites/2008#current" type="application/atom+xml"
    href="https://sites.google.com/feeds/content/site/siteName/5409745539831916487"/>
  <link rel="self" type="application/atom+xml"
    href="https://sites.google.com/feeds/activity/site/siteName/127448462987345884"/>
  <author>
    <name>User3</name>
    <email>user3@gmail.com</email>
  </author>
</entry>
</feed>

Uwaga: aby mieć dostęp do tego pliku danych, musisz być współpracownikiem lub właścicielem witryny. Klient musi wysłać prawidłowy nagłówek Authorization i odwołać się do tokena uzyskanego w ramach autoryzacji żądań.

Powrót do góry

Plik danych z wersjami

Aby pobrać historię zmian dowolnego wpisu treści, wyślij żądanie HTTP GET do linku do wersji wpisu:

https://sites.google.com/feeds/revision/domainName/siteName/CONTENT_ENTRY_ID
Parametr pliku danychOpis
domainNamesite” lub domena Twojej domeny hostowanej w G Suite (np. example.com).
siteNameNazwa przestrzeni internetowej Twojej witryny, którą znajdziesz w adresie URL witryny (np. myCoolSite).

Aby znaleźć link do wersji danej strony, komentarza, załącznika lub elementu listy, najpierw pobierz wpis ze źródła treści za pomocą identyfikatora CONTENT_ENTRY_ID. Pobrany wpis będzie zawierać <atom:link> do pliku danych z wersjami. Na przykład:

<link rel="http://schemas.google.com/sites/2008#revision" type="application/atom+xml"
    href="https://sites.google.com/feeds/revision/domainName/siteName/CONTENT_ENTRY_ID"/>

Przykładowe żądanie i odpowiedź:

GET /feeds/revision/domainName/siteName/CONTENT_ENTRY_ID HTTP/1.1
Host: sites.google.com
GData-Version: 1.4
Authorization: <your authorization header here>

HTTP/1.1 200 OK

<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/"
    xmlns:sites="http://schemas.google.com/sites/2008" xmlns:gs="http://schemas.google.com/spreadsheets/2006"
    xmlns:dc="http://purl.org/dc/terms" xmlns:batch="http://schemas.google.com/gdata/batch"
    xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0">
<id>https://sites.google.com/feeds/revision/domainName/siteName/CONTENT_ENTRY_ID</id>
<updated>2009-09-10T04:33:35.337Z</updated>
<title>Revisions</title>
<link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"
    href="https://sites.google.com/feeds/revision/domainName/siteName/CONTENT_ENTRY_ID"/>
<link rel="self" type="application/atom+xml"
    href="https://sites.google.com/feeds/revision/domainName/siteName/CONTENT_ENTRY_ID"/>
<generator version="1" uri="http://sites.google.com">Google Sites</generator>
<openSearch:startIndex>1</openSearch:startIndex>
<entry gd:etag="W/&quot;CU4GQmA9WxNRFUg.&quot;">
  <id>https://sites.google.com/feeds/revision/domainName/siteName/CONTENT_ENTRY_ID/2</id>
  <updated>2009-09-10T03:38:42.045Z</updated>
  <category scheme="http://schemas.google.com/g/2005#kind"
      term="http://schemas.google.com/sites/2008#webpage" label="webpage"/>
  <title>Home</title>
  <content type="xhtml">
    <div xmlns="http://www.w3.org/1999/xhtml">Latest content here</div>
  </content>
  <link rel="alternate" type="text/html"
    href="http://sites.google.com/domainName/siteName/CONTENT_ENTRY_ID/system/app/pages/admin/compare?wuid=wuid%3Agx%3A4f67c7&amp;rev1=2"/>
  <link rel="self" type="application/atom+xml" href="https://sites.google.com/feeds/revision/domainName/siteName/CONTENT_ENTRY_ID/2"/>
  <author>
    <name>User</name>
    <email>user@gmail.com</email>
  </author>
  <sites:pageName>home</sites:pageName>
  <sites:revision>2</sites:revision>
</entry>
<entry gd:etag="W/&quot;CU8DQ388eSl7ImA9WxNRFUg.&quot;">
  <id>https://sites.google.com/feeds/revision/domainName/siteName/CONTENT_ENTRY_ID/1</id>
  <updated>2009-09-10T03:37:52.171Z</updated>
  <category scheme="http://schemas.google.com/g/2005#kind"
      term="http://schemas.google.com/sites/2008#webpage" label="webpage"/>
  <title>Home</title>
  <content type="xhtml">
    <div xmlns="http://www.w3.org/1999/xhtml">Older content here</div>
  </content>
  <link rel="alternate" type="text/html"
    href="http://sites.google.com/domainName/siteName/CONTENT_ENTRY_ID/system/app/pages/admin/compare?wuid=wuid%3Agx%3A4bc7&amp;rev1=1"/>
  <link rel="self" type="application/atom+xml"
    href="https://sites.google.com/feeds/revision/domainName/siteName/CONTENT_ENTRY_ID/1"/>
  <author>
    <name>User</name>
    <email>user@gmail.com</email>
  </author>
  <sites:pageName>home</sites:pageName>
  <sites:revision>1</sites:revision>
</entry>
</feed>

Uwaga: aby mieć dostęp do tego pliku danych, musisz być współpracownikiem lub właścicielem witryny. Klient musi wysłać prawidłowy nagłówek Authorization i odwołać się do tokena uzyskanego w ramach autoryzacji żądań.

Powrót do góry

Źródło treści

Pobieranie treści

Źródło treści zawiera listę aktualnych treści witryny. Wyślij uwierzytelnione żądanie GET na ten adres URL:

https://sites.google.com/feeds/content/domainName/siteName
Parametr pliku danychOpis
domainNamesite” lub domena Twojej domeny hostowanej w G Suite (np. example.com).
siteNameNazwa przestrzeni internetowej Twojej witryny, którą znajdziesz w adresie URL witryny (np. myCoolSite).

W rezultacie otrzymasz plik danych, który zawiera listę wpisów z pierwszej strony witryny. Każdy wpis w pliku danych będzie reprezentować inny typ wpisu treści, np. webpage, filecabinet, attachment, comment itp. Typ wpisu określa element <category scheme="http://schemas.google.com/g/2005#kind">. Listę obsługiwanych wartości kind znajdziesz w przewodniku.

Uwaga: ten plik danych może wymagać uwierzytelniania lub nie, w zależności od uprawnień do udostępniania witryny. Jeśli witryna jest niepubliczna, klient musi wysłać prawidłowy nagłówek Authorization (jak w przykładzie powyżej) i odwołać się do tokena uzyskanego w sekcji Autoryzowanie żądań.

GET /feeds/content/domainName/siteName HTTP/1.1
Host: sites.google.com
GData-Version: 1.4
Authorization: <your authorization header here>

HTTP/1.1 200 OK

<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/"
  xmlns:sites="http://schemas.google.com/sites/2008" xmlns:gs="http://schemas.google.com/spreadsheets/2006"
  xmlns:dc="http://purl.org/dc/terms" xmlns:batch="http://schemas.google.com/gdata/batch"
  xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0">
<id>https://sites.google.com/feeds/content/domainName/siteName</id>
<updated>2009-08-31T01:39:20.286Z</updated>
<title>Content</title>
<link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"
    href="https://sites.google.com/feeds/content/domainName/siteName"/>
<link rel="http://schemas.google.com/g/2005#post" type="application/atom+xml"
    href="https://sites.google.com/feeds/content/domainName/siteName"/>
<link rel="self" type="application/atom+xml"
    href="https://sites.google.com/feeds/content/domainName/siteName"/>
<link rel="http://schemas.google.com/g/2005#batch" type="application/atom+xml"
    href="https://sites.google.com/feeds/content/domainName/siteName/batch""/>
<link rel="next" type="application/atom+xml" href="https://sites.google.com/feeds/content/domainName/siteName/?start-index=2"/>
<generator version="1" uri="http://sites.google.com">Google Sites</generator>
<openSearch:startIndex>1</openSearch:startIndex>
<entry gd:etag="W/&quot;Ck8GQXk7fil7ImA9WxNSFk0.&quot;">
  <id>https://sites.google.com/feeds/content/domainName/siteName/7322156894</id>
  <updated>2009-08-30T02:53:40.706Z</updated>
  <app:edited xmlns:app="http://www.w3.org/2007/app">2009-08-30T02:53:40.706Z</app:edited>
  <category scheme="http://schemas.google.com/g/2005#kind"
      term="http://schemas.google.com/sites/2008#webpage" label="webpage"/>
  <title>Subpage</title>
  <content type="xhtml">
    <div xmlns="http://www.w3.org/1999/xhtml">Page html content here</div>
  </content>
  <link rel="http://schemas.google.com/sites/2008#parent" type="application/atom+xml"
      href="https://sites.google.com/feeds/content/domainName/siteName/6492205817"/>
  <link rel="alternate" type="text"
      href="http://sites.google.com/site/siteName/subpage"/>
  <link rel="http://schemas.google.com/sites/2008#revision" type="application/atom+xml"
      href="https://sites.google.com/feeds/revision/domainName/siteName/7322156894"/>
  <link rel="self" type="application/atom+xml"
      href="https://sites.google.com/feeds/content/domainName/siteName/7322156894"/>
  <link rel="edit" type="application/atom+xml"
      href="https://sites.google.com/feeds/content/domainName/siteName/7322156894"/>
  <author>
    <name>User</name>
    <email>user@gmail.com</email>
  </author>
  <sites:pageName>subpage</sites:pageName>
  <sites:revision>5</sites:revision>
</entry>
<entry gd:etag="W/&quot;CkMBQH08fCl7ImA9WxNSFk0.&quot;">
  <id>https://sites.google.com/feeds/content/domainName/siteName/5930635231</id>
  <updated>2009-08-30T02:47:31.374Z</updated>
  <app:edited xmlns:app="http://www.w3.org/2007/app">2009-08-30T02:47:31.374Z</app:edited>
  <category scheme="http://schemas.google.com/g/2005#kind"
      term="http://schemas.google.com/sites/2008#listitem" label="listpage"/>
  <title/>
  <link rel="http://schemas.google.com/sites/2008#parent" type="application/atom+xml"
      href="https://sites.google.com/feeds/content/domainName/siteName/5930635231"/>
  <link rel="http://schemas.google.com/sites/2008#revision" type="application/atom+xml"
      href="https://sites.google.com/feeds/revision/domainName/siteName/5930635231"/>
  <link rel="self" type="application/atom+xml"
      href="https://sites.google.com/feeds/content/domainName/siteName/5930635231"/>
  <link rel="edit" type="application/atom+xml"
      href="https://sites.google.com/feeds/content/domainName/siteName/5930635231"/>
  <author>
    <name>User</name>
    <email>user@gmail.com</email>
  </author>
  <sites:revision>1</sites:revision>
  <gs:field index="A" name="Issue/Feature">Implement cool feature X</gs:field>
  <gs:field index="B" name="Priority">P2</gs:field>
  <gs:field index="C" name="Owner"/>
  <gs:field index="D" name="Resolved"/>
</entry>
<entry gd:etag="W/&quot;AkYHQ3ozcCl7ImA9WxJaE08.&quot;">
  <id>https://sites.google.com/feeds/content/domainName/siteName/1265948545471894517</id>
  <updated>2009-08-03T19:35:32.488Z</updated>
  <app:edited xmlns:app="http://www.w3.org/2007/app">2009-08-03T19:35:32.488Z</app:edited>
  <category scheme="http://schemas.google.com/g/2005#kind"
      term="http://schemas.google.com/sites/2008#filecabinet" label="filecabinet"/>
  <title>files</title>
  <content type="xhtml">
    <div xmlns="http://www.w3.org/1999/xhtml">Page html content here</div>
  </content>
  <link rel="alternate" type="text"
      href="https://sites.google.com/domainName/siteName/files"/>
  <link rel="http://schemas.google.com/sites/2008#revision" type="application/atom+xml"
      href="https://sites.google.com/feeds/revision/domainName/siteName/12671894517"/>
  <link rel="self" type="application/atom+xml"
      href="https://sites.google.com/feeds/content/domainName/siteName/12671894517"/>
  <link rel="edit" type="application/atom+xml"
      href="https://sites.google.com/feeds/content/domainName/siteName/12671894517"/>
  <author>
    <name>User</name>
    <email>user@gmail.com</email>
  </author>
  <gd:feedLink href="httpn://sites.google.com/feeds/content/domainName/siteName?parent=12671894517"/>
  <sites:pageName>files</sites:pageName>
  <sites:revision>1</sites:revision>
</entry>
...
</feed>

Uwaga: to tylko kilka pierwszych wyników. Aby przejść do następnej strony źródła treści, kliknij link „Dalej”:

<link rel="next" type="application/atom+xml" href="https://sites.google.com/feeds/content/domainName/siteName/?start-index=2"/>

Wyjaśnienie wspólnych elementów formatu Atom znajdziesz w dokumentacji protokołu danych Google. Elementy, które mają szczególne znaczenie w przypadku interfejsu API Witryn klasycznych, opisujemy poniżej. Niektóre wpisy rodzaju będą miały dodatkowe właściwości (niewymienione poniżej), a inne nie. Na przykład wpis listitem może zawierać elementy <gs:field>, a wpis webpage nie.

ElementOpis
<content ...>Tekst wewnętrzny to treść HTML strony. W przypadku niektórych wpisów (np. załączników) ten element będzie zawierać atrybut src wskazujący plik.
<link rel="alternate" ...>Link do strony lub elementu w Witrynach Google.
<link rel="http://schemas.google.com/sites/2008#revision" ...>href wskazuje plik danych z wersjami wpisu.
<link rel="http://schemas.google.com/sites/2008#parent" ...>Atrybut href wskazuje wpis nadrzędny.
<link rel="http://schemas.google.com/sites/2008#template" ...>Atrybut href wskazuje stronę szablonu wpisu.
<category scheme="http://schemas.google.com/g/2005#kind" ...>label to typ wpisu.
<category term="http://schemas.google.com/g/2005#template" ...>label=template oznaczający, że wpis jest szablonem.
<gd:feedLink>Atrybut href wskazuje elementy podrzędne elementu nadrzędnego wpisu.
<sites:pageName>Nazwa przestrzeni internetowej strony, która odpowiada nazwie w adresie URL strony.
<sites:revision>Bieżący numer wersji.

Przykłady zapytań dotyczących źródła treści

Plik danych możesz przeszukiwać za pomocą niektórych standardowych parametrów zapytań interfejsu Google Data API oraz parametrów specyficznych dla interfejsu Sites API w wersji klasycznej. Szczegółowe informacje i pełną listę obsługiwanych parametrów znajdziesz w przewodniku.

Pobieranie określonych rodzajów wpisów

Aby pobrać tylko określony typ wpisu, użyj parametru kind. Ten przykład zwraca tylko webpage pozycji:

GET /feeds/content/domainName/siteName?kind=webpage

Aby zwrócić więcej niż 1 typ wpisu, oddziel każdy z nich znakiem kind. Ten przykład zwraca wpisy filecabinetlistpage:

GET /feeds/content/domainName/siteName?kind=filecabinet,listpage

Zamiast parametru kind możesz też użyć standardowego formatu zapytania Google Data /-/category:

GET /feeds/content/domainName/siteName/-/filecabinet|listpage

Pobieranie szablonów stron

Ten przykład zwraca tylko template strony:

GET /feeds/content/domainName/siteName/-/template

Aby zwracać wszystkie typy wpisów i uwzględniać strony template, użyj tego zapytania:

GET /feeds/content/domainName/siteName/-/template|-template

Pobieranie strony według ścieżki

Jeśli znasz ścieżkę względną strony w Witrynach Google, możesz użyć parametru path, aby pobrać tę konkretną stronę. Ten przykład zwróci stronę znajdującą się pod adresem http://sites.google.com/site/siteName/path/to/the/page:

GET /feeds/content/domainName/siteName?path=/path/to/the/page

Pobieranie wszystkich wpisów na stronie nadrzędnej

Jeśli znasz identyfikator wpisu strony, możesz użyć parametru parent, aby pobrać wszystkie jej wpisy podrzędne (jeśli takie istnieją):

GET /feeds/content/domainName/siteName?parent=CONTENT_ENTRY_ID

w tym wersji roboczych i usuniętych wpisów.

Aby uwzględnić wersje robocze lub usunięte wpisy, użyj odpowiednio parametrów include-drafts lub include-deleted. Ten przykład zawiera wersje robocze wpisów w źródle treści:

GET /feeds/content/domainName/siteName?include-drafts=true

Wyszukiwanie pełnotekstowe

Aby przeszukać całą zawartość witryny, użyj parametru q, aby przeprowadzić wyszukiwanie pełnotekstowe:

GET /feeds/content/domainName/siteName?q=Text%20I%20am%20looking%20for

Powrót do góry



Tworzenie treści

Nowe treści (strony internetowe, strony z listami, strony z szafkami na pliki, strony z ogłoszeniami itp.) można tworzyć, wysyłając żądanie HTTP POSTdo źródła treści:

https://sites.google.com/feeds/content/domainName/siteName

Listę obsługiwanych typów wpisów znajdziesz w parametrze kindPrzewodniku.

Tworzenie nowych elementów lub stron

W tym przykładzie tworzymy nowy element webpage w domenie najwyższego poziomu witryny, dodajemy kod XHTML do treści strony i ustawiamy tytuł nagłówka na „Nowy tytuł strony internetowej”:

POST /feeds/content/domainName/siteName HTTP/1.1
Host: sites.google.com
GData-Version: 1.4
Authorization: <your authorization header here>
Content-Length: 328
Content-Type: application/atom+xml

<entry xmlns="http://www.w3.org/2005/Atom">
  <category scheme="http://schemas.google.com/g/2005#kind"
      term="http://schemas.google.com/sites/2008#webpage" label="webpage"/>
  <title>New Webpage Title</title>
  <content type="xhtml">
    <div xmlns="http://www.w3.org/1999/xhtml">HTML body goes here</div>
  </content>
</entry>

Jeśli operacja się uda, serwer odpowie za pomocą elementu 201 Created i kopii wpisu.

Tworzenie produktów lub stron w ramach niestandardowych ścieżek adresów URL

Domyślnie poprzedni przykład zostanie utworzony pod adresem URLhttp://sites.google.com/domainName/siteName/new-webpage-title i będzie miał nagłówek strony „New Webpage Title”. Oznacza to, że w adresie URL znak <atom:title> jest normalizowany do new-webpage-title. Aby dostosować ścieżkę adresu URL strony, możesz ustawić element <sites:pageName>.

W tym przykładzie tworzony jest nowy filecabinet z nagłówkiem strony „File Storage”, ale strona jest tworzona pod adresem URL http://sites.google.com/domainName/siteName/files przez określenie elementu <sites:pageName>.

POST /feeds/content/domainName/siteName HTTP/1.1
Host: sites.google.com
GData-Version: 1.4
Authorization: <your authorization header here>
Content-Length: 393
Content-Type: application/atom+xml

<entry xmlns="http://www.w3.org/2005/Atom" xmlns:sites="http://schemas.google.com/sites/2008">
  <category scheme="http://schemas.google.com/g/2005#kind"
      term="http://schemas.google.com/sites/2008#filecabinet" label="filecabinet"/>
  <title>File Storage</title>
  <content type="xhtml">
    <div xmlns="http://www.w3.org/1999/xhtml">A list of files is below.</div>
  </content>
  <sites:pageName>files</sites:pageName>
</entry>

Serwer stosuje te reguły pierwszeństwa przy nadawaniu nazwy ścieżce adresu URL strony:

  1. <sites:pageName>, jeśli występuje. Musi spełniać warunek a-z, A-Z, 0-9, -, _.
  2. <atom:title> nie może mieć wartości null, jeśli nie ma parametru pageName. Normalizacja polega na przycięciu i zwinięciu białych znaków do „-” oraz usunięciu znaków niezgodnych z wzorcem a-z, A-Z, 0-9, -, _.

Na przykład serwer zaakceptuje wartość „Custom_Page2”.

Tworzenie podstron

Aby utworzyć podstrony (strony podrzędne) na stronie nadrzędnej, w nowym wpisie Atom umieść element <link rel="http://schemas.google.com/sites/2008#parent">. Ustaw atrybut href linku na link do samego siebie w przypadku wpisu nadrzędnego.

W tym przykładzie tworzymy nowy element announcement z nagłówkiem „announcement” na stronie z aktualnościami nadrzędnymi o identyfikatorze PARENT_ENTRY_ID. Zawiera też treść XHTML dla treści strony:

POST /feeds/content/domainName/siteName HTTP/1.1
Host: sites.google.com
GData-Version: 1.4
Authorization: <your authorization header here>
Content-Length: 470
Content-Type: application/atom+xml

<entry xmlns="http://www.w3.org/2005/Atom">
  <category scheme="http://schemas.google.com/g/2005#kind"
      term="http://schemas.google.com/sites/2008#announcement" label="announcement"/>
  <link rel="http://schemas.google.com/sites/2008#parent" type="application/atom+xml"
      href="https://sites.google.com/feeds/content/domainName/siteName/PARENT_ENTRY_ID"/>
  <title>announcement</title>
  <content type="xhtml">
    <div xmlns="http://www.w3.org/1999/xhtml">This weekend. My place.</div>
  </content>
</entry>

Szablony stron

Tworzenie szablonów stron

Proces tworzenia szablonu strony jest taki sam jak tworzenie nowych elementów lub strontworzenie podstron.Różnica polega na dodaniu category z terminem i etykietą ustawionymi odpowiednio na „http://schemas.google.com/g/2005#template” i „template”.

W tym przykładzie tworzymy nowy szablon webpage.

POST /feeds/content/domainName/siteName HTTP/1.1
Host: sites.google.com
GData-Version: 1.4
Authorization: <your authorization header here>
Content-Length: 464
Content-Type: application/atom+xml

<entry xmlns="http://www.w3.org/2005/Atom" xmlns:sites="http://schemas.google.com/sites/2008">
  <category scheme="http://schemas.google.com/g/2005#kind"
      term="http://schemas.google.com/sites/2008#webpage" label="webpage"/>
  <category scheme="http://schemas.google.com/g/2005#labels" term="http://schemas.google.com/g/2005#template" label="template"/>
  <title>Webpage Template</title>
  <content type="xhtml">
    <div xmlns="http://www.w3.org/1999/xhtml">This weekend. My place.</div>
  </content>
</entry>

Tworzenie stron na podstawie szablonu

Podobnie jak w przypadku tworzenia szablonów stron, możesz utworzyć instancję nowej strony na podstawie szablonu, umieszczając element <link> z atrybutem rel='http://schemas.google.com/sites/2008#template' wskazującym na link własny szablonu strony.

W tym przykładzie tworzymy nową stronę filecabinet na podstawie istniejącego szablonu strony, który definiuje szafę na dokumenty.

POST /feeds/content/domainName/siteName HTTP/1.1
Host: sites.google.com
GData-Version: 1.4
Authorization: <your authorization header here>
Content-Length: 464
Content-Type: application/atom+xml

<entry xmlns="http://www.w3.org/2005/Atom" xmlns:sites="http://schemas.google.com/sites/2008">
  <category scheme="http://schemas.google.com/g/2005#kind"
      term="http://schemas.google.com/sites/2008#filecabinet" label="filecabinet"/>
  <title>File Cabinet Page From Template</title>
  <link rel='http://schemas.google.com/sites/2008#template' type='application/atom+xml'
    href='https://sites.google.com/feeds/content/domainName/siteName/ENTRY_ID'/>
</entry>

Uwaga: mimo że szablon definiuje <category>, musisz go uwzględnić w swoim zgłoszeniu. Pamiętaj też, że jeśli dodasz element <content>, serwer go odrzuci.

przesyłanie plików;

Podobnie jak w Witrynach Google, interfejs API umożliwia przesyłanie załączników na strony magazynów plików i strony nadrzędne.

Aby przesłać załącznik do elementu nadrzędnego, wyślij żądanie HTTP POST na adres URL źródła treści:

https://sites.google.com/feeds/content/domainName/siteName

Treść POST powinna być żądaniem MIME w wielu częściach, aby połączyć zawartość pliku z elementem <atom:entry> zawierającym metadane załącznika. <atom:entry> powinien odwoływać się do linku do samego siebie w przypadku wpisu nadrzędnego, aby określić, gdzie zostanie utworzony załącznik. Więcej informacji znajdziesz w artykule Tworzenie podstron.

Przesyłam załączniki

Oto przykład przesyłania pliku PDF do magazynu plików o identyfikatorze PARENT_ENTRY_ID. Załącznik zostanie utworzony z tytułem „Plik PDF” i (opcjonalnym) opisem „Pakiet HR”.

POST /feeds/content/domainName/siteName HTTP/1.1
Host: sites.google.com
GData-Version: 1.4
Authorization: <your authorization header here>
Content-Length: 7221984
Content-Type: multipart/related; boundary=END_OF_PART
--END_OF_PART
Content-Type: application/atom+xml

<entry xmlns="http://www.w3.org/2005/Atom">
  <category scheme="http://schemas.google.com/g/2005#kind"
          term="http://schemas.google.com/sites/2008#attachment" label="attachment"/>
  <link rel="http://schemas.google.com/sites/2008#parent" type="application/atom+xml"
        href="https://sites.google.com/feeds/content/domainName/siteName/PARENT_ENTRY_ID"/>
  <title>PDF File</title>
  <summary>HR packet</summary>
</entry>

--END_OF_PART
Content-Type: application/pdf

... pdf contents here ...

--END_OF_PART--

Jeśli przesyłanie się powiedzie, serwer odpowie kodem 201 Created i kopią nowo utworzonego wpisu załącznika.

Przesyłanie załącznika do folderu

Aby przesłać załącznik do istniejącego folderu w filecabinet, dodaj kategorię z atrybutem „term” ustawionym na nazwę folderu:

<category scheme="http://schemas.google.com/sites/2008#folder" term="FolderName">

Załączniki internetowe

Załączniki internetowe to specjalny rodzaj załączników. Są to linki do innych plików w internecie, które możesz dodać do swoich ofert w szafie na dokumenty. Ta funkcja jest analogiczna do metody przesyłania „Dodaj plik według adresu URL” w interfejsie Witryn Google.

Uwaga: załączniki internetowe można tworzyć tylko w magazynie plików. Nie można ich przesyłać na inne typy stron.

Ten przykład tworzy element webattachment w szafce na dokumenty, do której odwołuje się identyfikator FILECABINET_ENTRY_ID. Jej tytuł i (opcjonalny) opis są ustawione odpowiednio na „GoogleLogo” i „nice colors”.

POST /feeds/content/domainName/siteName HTTP/1.1
Host: sites.google.com
GData-Version: 1.4
Authorization: <your authorization header here>
Content-Type: application/atom+xml
Content-Length: 531

<entry xmlns="http://www.w3.org/2005/Atom">
  <category scheme="http://schemas.google.com/g/2005#kind"
          term="http://schemas.google.com/sites/2008#webattachment" label="webattachment"/>
  <link rel="http://schemas.google.com/sites/2008#parent" type="application/atom+xml"
        href="https://sites.google.com/feeds/content/domainName/siteName/FILECABINET_ENTRY_ID"/>
  <title>GoogleLogo</title>
  <summary>nice colors</summary>
  <content type="image/gif" src="http://www.google.com/images/logo.gif"></content>
</entry>

Pole POST tworzy w szafce plików użytkownika link do obrazu pod adresem „http://www.google.com/images/logo.gif”.

Powrót do góry



Aktualizowanie treści

Metadane (tytuł, pageName itp.) i treść dowolnej strony można edytować za pomocą jednego żądania PUT wysłanego na adres edit. Treść żądania powinna zawierać wpis Atom opisujący zaktualizowaną stronę. Wyjątkiem od tej reguły jest wpis załącznika, w którym można tylko aktualizować metadane załącznika. Aby zmienić zawartość załączonego pliku, po prostu umieść surowe dane w treści żądania PUT wysłanego na adres edit-media załącznika. Możesz też jednocześnie zaktualizować metadane i zawartość załączonego pliku, korzystając z żądania MIME multipart.

Aby potwierdzić, że aktualizacja nie zastępuje zmian innego klienta, uwzględnij wartość ETag oryginalnego wpisu. Możesz to zrobić, podając wartość ETag w nagłówku HTTP If-Match lub uwzględniając atrybut gd:etag oryginalnego wpisu w zaktualizowanym wpisie. Aby określić wartość ETag pierwotnego wpisu, sprawdź atrybut gd:etag elementu <entry>. W przypadku wpisów dotyczących multimediów tag ETag może być dostępny w atrybucie gd:etag linku edit-media.

Jeśli chcesz zaktualizować wpis niezależnie od tego, czy od czasu jego pobrania został on zaktualizowany przez inną osobę, użyj If-Match: * i nie uwzględniaj tagu ETag. Więcej informacji o tagach ETag znajdziesz w przewodniku po interfejsach API danych Google.

Aktualizowanie metadanych lub treści HTML produktu

Aby zaktualizować metadane lub zawartość HTML wpisu, wyślij żądanie HTTP PUT do linku edit wpisu.

Poniżej znajdziesz przykład aktualizacji wpisu listpage (reprezentowanego przez identyfikator ENTRY_ID) z tymi zmianami:

  • Tytuł zostanie zmieniony na „Zaktualizowana treść”.
  • Zaktualizowana treść HTML
  • Pierwszy nagłówek kolumny na liście zostanie zmieniony na „Właściciel”.
  • Ścieżka adresu URL strony jest modyfikowana przez element <sites:pageName>
PUT /feeds/content/domainName/siteName/ENTRY_ID
Host: sites.google.com
GData-Version: 1.4
Authorization: <your authorization header here>
Content-Length: 816
Content-Type: application/atom+xml

<entry xmlns="http://www.w3.org/2005/Atom" xmlns:sites="http://schemas.google.com/sites/2008"
    xmlns:gs="http://schemas.google.com/spreadsheets/2006" xmlns:gd="http://schemas.google.com/g/2005"
    gd:etag="W/&quot;CEEBRn0ymA9WxJWEUw.&quot;">
  <category scheme="http://schemas.google.com/g/2005#kind"
      term="http://schemas.google.com/sites/2008#listpage" label="listpage"/>
  <title>Updated Title</title>
  <content type="xhtml">
    <div xmlns="http://www.w3.org/1999/xhtml">Updated Content</div>
  </content>
  <gs:worksheet name="listpage"/>
  <gs:header row="1"/>
  <gs:data startRow="2">
    <gs:column index="A" name="Owner"/>
    <gs:column index="B" name="Description"/>
    <gs:column index="C" name="Completed"/>
  </gs:data>
  <sites:pageName>newPagePath</sites:pageName>
</entry>

Uwaga: wpis (zwrócony przez serwer) będzie zawierać więcej elementów niż w przykładzie powyżej.

Zastępowanie treści załącznika

Poniżej znajdziesz przykład zastąpienia zawartości załącznika bez zmiany jego metadanych. Ponieważ żądanie zawiera nowe treści, używany jest link edit-media w pozycji załącznika.

PUT /feeds/media/content/domainName/siteName/ATTACHMENT_ENTRY_ID
Host: sites.google.com
GData-Version: 1.4
Authorization: <your authorization header here>
Content-Length: 70581
Content-Type: application/msword

... doc contents here ...

Aktualizowanie metadanych i treści załącznika

Poniżej znajdziesz przykład aktualizacji zarówno metadanych załącznika, jak i jego treści w tym samym czasie. Nazwa załącznika zostanie zmieniona na „Nowy tytuł”, a jego zawartość zostanie zastąpiona zawartością pliku ZIP. Ponieważ żądanie zawiera nową zawartość pliku, używany jest link edit-media w pozycji załącznika.

Pamiętaj, że uwzględnienie tagu ETag metadanych zapewnia również domyślne If-Match dla treści multimedialnych, ponieważ każda aktualizacja treści multimedialnych powoduje zmianę tagu ETag metadanych.

PUT /feeds/media/content/domainName/siteName/ATTACHMENT_ENTRY_ID
Host: sites.google.com
GData-Version: 1.4
Authorization: <your authorization header here>
Content-Type: multipart/related; boundary="END_OF_PART"
--END_OF_PART
Content-Type: application/atom+xml

<?xml version='1.0' encoding='UTF-8'?>
<entry xmlns="http://www.w3.org/2005/Atom" xmlns:gd="http://schemas.google.com/g/2005" gd:etag="BxAaTxRZAyp7ImBq">
  <link rel="http://schemas.google.com/sites/2008#parent" type="application/atom+xml"
        href="https://sites.google.com/feeds/content/domainName/siteName/ATTACHMENT_ENTRY_ID"/>
  <title>New Title</title>
</entry>

--END_OF_PART
Content-Type: application/zip

... zip contents here ...

--END_OF_PART

Powrót do góry



Usuwanie treści

Aby usunąć element z witryny Google, najpierw pobierz wpis, a potem wyślij żądanie DELETEedit na adres URL wpisu. Jest to ten sam adres URL, który jest używany podczas aktualizowania metadanych lub treści HTML elementu.

DELETE /feeds/content/domainName/siteName/ENTRY_ID
Host: sites.google.com
GData-Version: 1.4
Authorization: <your authorization header here>
If-Match: <ETag or * here>

Jeśli wpis został usunięty, serwer odpowie kodem HTTP 200 OK.

Jeśli chcesz mieć pewność, że nie usuniesz wpisu, który został zmieniony przez innego klienta od czasu jego pobrania, dołącz nagłówek HTTP If-Match zawierający oryginalną wartość ETag wpisu. Wartość ETag pierwotnego wpisu możesz określić, sprawdzając atrybut gd:etag elementu <entry>.

Jeśli chcesz usunąć wpis niezależnie od tego, czy od czasu jego pobrania został on zaktualizowany przez inną osobę, użyj If-Match: * i nie uwzględniaj tagu ETag. (W tym przypadku nie musisz pobierać wpisu przed jego usunięciem).

Więcej informacji o tagach ETag znajdziesz w przewodniku po interfejsach API danych Google.

Powrót do góry



Pobieranie załączników

Gdy masz już wpis załącznika, możesz pobrać plik, wysyłając uwierzytelnione żądanie HTTP GET do linku <content> src wpisu. Przykład linku do treści w pliku PDF:

<content type="application/pdf"
  src="http://502377765-a-google-com-s-sites.googlegroups.com/feeds/media/content/domainName/siteName/678942036"/>

Powrót do góry

Plik danych ACL

Omówienie uprawnień do udostępniania (list ACL)

Każdy wpis na liście kontroli dostępu w pliku danych ACL reprezentuje rolę dostępu konkretnego podmiotu, czyli użytkownika, grupy użytkowników, domeny lub domyślnego dostępu (który jest witryną publiczną). Pozycje będą wyświetlane tylko w przypadku podmiotów z wyraźnym dostępem – dla każdego adresu e-mail w panelu „Osoby z dostępem” na ekranie udostępniania w interfejsie użytkownika Witryn Google będzie wyświetlana jedna pozycja. Dlatego administratorzy domeny nie będą widoczni, mimo że mają domyślny dostęp do witryny.

Role

Element role reprezentuje poziom dostępu, jaki może mieć encja. Element gAcl:role może przyjmować 4 wartości:

  • odczytujący – przeglądający (odpowiednik dostępu tylko do odczytu);
  • edytujący – współpracownik (odpowiednik uprawnień do zapisu i odczytu);
  • właściciel – zwykle administrator witryny (odpowiednik uprawnień do odczytu i zapisu);

Zakresy

Element zakresu reprezentuje podmiot, który ma ten poziom dostępu. Element gAcl:scope może mieć 5 rodzajów:

  • user – wartość adresu e-mail, np. „user@gmail.com”.
  • group – adres e-mail Grupy dyskusyjnej Google, np. „group@domain.com”.
  • domain – nazwa domeny G Suite, np. „domena.com”.
  • invite – użytkownik, który został zaproszony do witryny, ale nie został jeszcze dodany do listy ACL witryny. (Niedostępne, jeśli określono gdata w wersji 1.3 lub starszej).
  • default – istnieje tylko jeden możliwy zakres typu „default”, który nie ma wartości (np.<gAcl:scope type="default">). Ten konkretny zakres kontroluje dostęp, jaki każdy użytkownik ma domyślnie w przypadku witryny publicznej.

Uwaga: domeny nie mogą mieć wartości gAcl:role ustawionej na dostęp „właściciel”, mogą mieć tylko dostęp „czytelnik” lub „edytujący”.

Informacje o zakresie „invite”.

Interfejs API zwraca zakres zaproszenia, gdy dodajesz do listy ACL co najmniej 1 użytkownika, który nie ma jeszcze konta Google. Interfejs API zwraca adres URL z osadzonym tokenem, który musisz przekazać zaproszonym użytkownikom, aby umożliwić im zaakceptowanie zaproszenia.

Ta metoda zapraszania umożliwia zapraszanie użytkowników bez konta Google bez wcześniejszej wiedzy o tym, jakiego adresu e-mail chcą używać. Jeśli użytkownicy klikną adres URL zaproszenia z osadzonym tokenem, mogą zarejestrować się, używając dowolnego adresu e-mail. Dodatkowo wielu użytkowników może użyć tego adresu URL, aby zaakceptować zaproszenie. Może to być przydatne, jeśli zapraszasz jednego użytkownika lub grupę użytkowników.

Uwaga: zakres „invite” jest dostępny tylko w gdata w wersji 1.4 i nowszej. Nie będzie to działać, jeśli wyraźnie określisz wersję 1.3 lub starszą.

Pobieranie pliku danych ACL

Plik danych ACL może służyć do kontrolowania uprawnień do udostępniania witryny i jest dostępny pod tym adresem URI:

https://sites.google.com/feeds/acl/site/domainName/siteName
Parametr pliku danychOpis
domainNamesite” lub domena Twojej domeny hostowanej w G Suite (np. example.com).
siteNameNazwa przestrzeni internetowej Twojej witryny, którą znajdziesz w adresie URL witryny (np. myCoolSite).

Warto zauważyć, że każdy wpis w pliku danych o witrynie zawiera link do tego pliku:

 <link rel="http://schemas.google.com/acl/2007#accessControlList" type="application/atom+xml"
      href="https://sites.google.com/feeds/acl/site/domainName/siteName"/>

Aby pobrać uprawnienia do udostępniania witryny, wyślij żądanie HTTP GET do identyfikatora URI pliku danych ACL:

GET /feeds/acl/site/domainName/siteName HTTP/1.1
Host: sites.google.com
GData-Version: 1.4
Authorization: <your authorization header here>

Serwer odpowie kodem 200 OK i plikiem danych z wpisami listy ACL:

<feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/"
    xmlns:gAcl="http://schemas.google.com/acl/2007" xmlns:sites="http://schemas.google.com/sites/2008"
    xmlns:gs="http://schemas.google.com/spreadsheets/2006" xmlns:dc="http://purl.org/dc/terms"
    xmlns:batch="http://schemas.google.com/gdata/batch" xmlns:gd="http://schemas.google.com/g/2005"
    xmlns:thr="http://purl.org/syndication/thread/1.0">
<id>https://sites.google.com/feeds/acl/site/domainName/siteName</id>
<updated>2009-12-03T22:01:05.963Z</updated>
<category scheme="http://schemas.google.com/g/2005#kind" term="http://schemas.google.com/acl/2007#accessRule"/>
<title>Acl</title>
<link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"
    href="https://sites.google.com/feeds/acl/site/domainName/siteName"/>
<link rel="http://schemas.google.com/g/2005#post" type="application/atom+xml"
    href="https://sites.google.com/feeds/acl/site/domainName/siteName"/>
<link rel="self" type="application/atom+xml"
    href="https://sites.google.com/feeds/acl/site/domainName/siteName"/>
<generator version="1" uri="http://sites.google.com">Google Sites</generator>
<openSearch:startIndex>1</openSearch:startIndex>
<entry>
  <id>https://sites.google.com/feeds/acl/site/domainName/siteName/user%3AuserA%40gmail.com</id>
  <updated>2009-12-03T22:01:05.963Z</updated>
  <app:edited xmlns:app="http://www.w3.org/2007/app">2009-12-03T22:01:05.963Z</app:edited>
  <category scheme="http://schemas.google.com/g/2005#kind" term="http://schemas.google.com/acl/2007#accessRule"/>
  <link rel="self" type="application/atom+xml"
      href="https://sites.google.com/feeds/acl/site/domainName/siteName/user%3AuserA%40google.com"/>
  <link rel="edit" type="application/atom+xml"
      href="https://sites.google.com/feeds/acl/site/domainName/siteName/user%3AuserA%40google.com"/>
  <gAcl:scope type="user" value="userA@google.com"/>
  <gAcl:role value="owner"/>
</entry>
<entry>
  <id>https://sites.google.com/feeds/acl/site/domainName/siteName/user%3AuserB%40gmail.com</id>
  <updated>2009-12-03T22:01:05.963Z</updated>
  <app:edited xmlns:app="http://www.w3.org/2007/app">2009-12-03T22:01:05.963Z</app:edited>
  <category scheme="http://schemas.google.com/g/2005#kind" term="http://schemas.google.com/acl/2007#accessRule"/>
  <link rel="self" type="application/atom+xml"
      href="https://sites.google.com/feeds/acl/site/domainName/siteName/user%3AuserB%40gmail.com"/>
  <link rel="edit" type="application/atom+xml"
      href="https://sites.google.com/feeds/acl/site/domainName/siteName/user%3AuserB%40gmail.com"/>
  <gAcl:scope type="user" value="userB@gmail.com"/>
  <gAcl:role value="writer"/>
</entry>
<entry>
  <id>https://sites.google.com/feeds/acl/site/domainName/siteName/user%3AuserC%40gmail.com</id>
  <updated>2009-12-03T22:01:05.963Z</updated>
  <app:edited xmlns:app="http://www.w3.org/2007/app">2009-12-03T22:01:05.963Z</app:edited>
  <category scheme="http://schemas.google.com/g/2005#kind" term="http://schemas.google.com/acl/2007#accessRule"/>
  <link rel="self" type="application/atom+xml"
      href="https://sites.google.com/feeds/acl/site/domainName/siteName/user%3AuserC%40gmail.com"/>
  <link rel="edit" type="application/atom+xml"
      href="https://sites.google.com/feeds/acl/site/domainName/siteName/user%3AuserC%40gmail.com"/>
  <gAcl:scope type="user" value="userC@gmail.com"/>
  <gAcl:role value="reader"/>
</entry>
...
</feed>

Powrót do góry

Udostępnianie witryny

Kanał list kontroli dostępu akceptuje żądania GET, POSTPUT. Aby wstawić nową rolę do pliku danych listy ACL, wystarczy wysłać żądanie POST do pliku danych listy ACL witryny.

Uwaga: niektóre listy ACL udostępniania mogą być możliwe tylko wtedy, gdy domena jest skonfigurowana tak, aby zezwalać na takie uprawnienia (np. jeśli w przypadku domen G Suite włączone jest udostępnianie poza domenę).

Ten przykład pokazuje, jak dodać do witryny nowego współpracownika (autora):

POST /feeds/acl/site/domainName/siteName HTTP/1.1
Host: sites.google.com
GData-Version: 1.4
Authorization: <your authorization header here>

<entry xmlns="http://www.w3.org/2005/Atom" xmlns:gAcl='http://schemas.google.com/acl/2007'>
  <category scheme='http://schemas.google.com/g/2005#kind'
    term='http://schemas.google.com/acl/2007#accessRule'/>
  <gAcl:role value='writer'/>
  <gAcl:scope type='user' value='new_writer@example.com'/>
</entry>

W przypadku udanego wstawienia zwracany jest 201 Created i nowy wpis:

<entry>
  <id>https://sites.google.com/feeds/acl/site/domainName/siteName/user%3Anew_writer%40example.com</id>
  <updated>2009-12-03T22:01:05.963Z</updated>
  <app:edited xmlns:app="http://www.w3.org/2007/app">2009-12-03T22:01:05.963Z</app:edited>
  <category scheme="http://schemas.google.com/g/2005#kind" term="http://schemas.google.com/acl/2007#accessRule"/>
  <link rel="self" type="application/atom+xml"
      href="https://sites.google.com/feeds/acl/site/domainName/siteName/user%3Anew_writer%40example.com"/>
  <link rel="edit" type="application/atom+xml"
      href="https://sites.google.com/feeds/acl/site/domainName/siteName/user%3Anew_writer%40example.com"/>
  <gAcl:role value='writer'/>
  <gAcl:scope type='user' value='new_writer@example.com'/>
</entry>

Zapraszanie użytkowników za pomocą zakresu „invite”

Jeśli dodasz użytkowników, którzy nie mają kont Google, interfejs API zwróci adres URL, który musisz przekazać użytkownikom, których chcesz zaprosić. Po kliknięciu adresu URL użytkownik będzie mógł uzyskać dostęp do witryny, logując się na istniejące konto lub tworząc nowe.

W przypadku udanego zaproszenia zwracana jest wartość 201 Created i nowy wpis zawierający adres URL, który musisz przekazać użytkownikowi:

<entry>
  <id>https://sites.google.com/feeds/acl/site/domainName/siteName/user%3Anew_invite%40example.com</id>
  <updated>2009-12-03T22:01:05.963Z</updated>
  <app:edited xmlns:app="http://www.w3.org/2007/app">2009-12-03T22:01:05.963Z</app:edited>
  <category scheme="http://schemas.google.com/g/2005#kind" term="http://schemas.google.com/acl/2007#accessRule"/>
  <link rel="http://schemas.google.com/sites/2008#invite" type="text/html"href="domainName/siteName?invite=inviteToken"/>
  <link rel="self" type="application/atom+xml"
      href="https://sites.google.com/feeds/acl/site/domainName/siteName/user%3Anew_invite%40example.com"/>
  <link rel="edit" type="application/atom+xml"
      href="https://sites.google.com/feeds/acl/site/domainName/siteName/user%3Anew_invite%40example.com"/>
  <gAcl:role value='writer'/>
  <gAcl:scope type='invite' value='new_invite%40example.com'/>
</entry>

Udostępnianie na poziomie grupy i domeny

Podobnie jak w przypadku udostępniania witryny pojedynczemu użytkownikowi, możesz udostępnić witrynę grupie dyskusyjnej Google lub domenie G Suite. Wymagane wartości scope znajdziesz poniżej.

Udostępnianie na adres e-mail grupy:

<gAcl:scope type="group" value="group@example.com"/>

Udostępnianie całej domenie:

<gAcl:scope type="domain" value="example.com"/>

Udostępnianie na poziomie domeny jest obsługiwane tylko w przypadku domen G Suite i tylko w przypadku domeny, w której hostowana jest witryna. Na przykład witryna http://sites.google.com/a/domena1.com/witrynaA może udostępniać całą witrynę tylko domenie domena1.com, a nie domenie domena2.com. Witryny, które nie są hostowane w domenie G Suite (np. http://sites.google.com/site/witrynaB), nie mogą zapraszać domen.

Modyfikowanie uprawnień do udostępniania

Aby zaktualizować wpis listy ACL, zmodyfikuj go w odpowiedni sposób i wyślij żądanie HTTP PUT do linku edit wpisu, który jest po prostu elementem <link> z atrybutem „rel” ustawionym na „edit”. W przypadku poprzedniego przykładu ten link to:

<link rel='edit' type='application/atom+xml'
    href='https://sites.google.com/feeds/acl/site/domainName/siteName/user%3Anew_writer%40example.com'/>

Poniższy fragment kodu zmienia rolę użytkownika new_writer@gmail.com na „czytelnik”:

PUT /feeds/acl/site/domainName/siteName/user%3Anew_writer%40example.com HTTP/1.1
Host: sites.google.com
GData-Version: 1.4
Authorization: <your authorization header here>

<entry xmlns="http://www.w3.org/2005/Atom" xmlns:gAcl='http://schemas.google.com/acl/2007'>
  <category scheme='http://schemas.google.com/g/2005#kind' term='http://schemas.google.com/acl/2007#accessRule'/>
  <gAcl:role value='reader'/>
  <gAcl:scope type='user' value='new_writer@gmail.com'/>
</entry>

Usuwanie uprawnień do udostępniania

Aby usunąć uprawnienia tego użytkownika, wyślij DELETE żądanie do tego samego linku edit, który został użyty w przypadku żądania PUT:

DELETE /feeds/acl/site/domainName/siteName/user%3Anew_writer%40example.com HTTP/1.1
Host: sites.google.com
GData-Version: 1.4
Authorization: <your authorization header here>

Serwer odpowie kodem 200 OK.

Powrót do góry

Tematy specjalne

Ponowne pobieranie kanału lub wpisu

Jeśli chcesz pobrać plik danych lub wpis, który został już wcześniej pobrany, możesz zwiększyć wydajność, informując serwer, aby wysyłał listę lub wpis tylko wtedy, gdy uległy one zmianie od czasu ostatniego pobrania.

Aby przeprowadzić takie warunkowe pobieranie, wyślij żądanie HTTP GET, które zawiera nagłówek HTTP If-None-Match. W nagłówku podaj ETag listy lub wpisu, który znajdziesz w atrybucie gd:etag elementu <feed> lub elementu <entry>.

Przykład użycia pliku danych o witrynie:

GET /feeds/site/domainName/myOtherTestSite/
GData-Version: 1.4
If-None-Match: W/"Ck8GQXk7fil7ImA9WxNSFk0."

Gdy serwer otrzyma to żądanie, sprawdzi, czy żądany element ma ten sam tag ETag co tag ETag, który został przez Ciebie określony. Jeśli tagi ETag są zgodne, oznacza to, że element nie uległ zmianie, a serwer zwraca kod stanu HTTP 304 Not Modified lub kod stanu HTTP 412 Precodition Failed. Oba te kody stanu wskazują, że pobrany już element jest aktualny.

Jeśli tagi ETag nie pasują do siebie, oznacza to, że od ostatniego żądania element został zmodyfikowany, a serwer zwraca element.

Więcej informacji o tagach ETag znajdziesz w przewodniku po interfejsach API danych Google.

Przetwarzanie wsadowe

Żądania zbiorcze umożliwiają klientowi wykonywanie wielu operacji w ramach jednego żądania, zamiast przesyłania każdej operacji osobno.

Serwer wprowadzi jak najwięcej żądanych zmian i zwróci informacje o stanie, których możesz użyć do oceny, czy każda operacja zakończyła się powodzeniem. Więcej informacji o przetwarzaniu wsadowym w interfejsie Google Data API znajdziesz w artykule Przetwarzanie wsadowe za pomocą interfejsów Google Data API.

Każda operacja w źródle danych wsadowych ma element <id>, z wyjątkiem operacji wstawiania. Ten element jest taki sam jak adres URL żądania, którego zwykle używasz podczas aktualizowania, usuwania lub wysyłania zapytań do źródła treści. Jeśli na przykład aktualizujesz edycję, ustaw wartość <id> na link edit do danego wpisu. Służy do identyfikowania docelowego wpisu. Nowe wpisy nie mają elementów <id>, ponieważ nie zostały jeszcze utworzone. Zamiast tego możesz zdefiniować wartość ciągu znaków w elemencie <batch:id>, która będzie zwracana w odpowiedzi serwera i używana do wyszukiwania odpowiedniego wpisu.

Aby wysłać żądanie zbiorcze, utwórz plik danych zbiorczych i wyślij żądanie HTTP POST do linku zbiorczego pliku danych:

<link rel="http://schemas.google.com/g/2005#batch" type="application/atom+xml"
    href="https://sites.google.com/feeds/content/site/siteName/batch"/>

Przykład poniżej pokazuje, jak wysyłać zapytania, wstawiać, aktualizować i usuwać wpis strony internetowej:

POST /feeds/content/site/siteName/batch HTTP/1.1
Host: sites.google.com
Accept: */*
If-Match: *
GData-Version: 1.4
Authorization: <your authorization header here>

<feed xmlns="http://www.w3.org/2005/Atom" xmlns:sites="http://schemas.google.com/sites/2008"
      xmlns:gd="http://schemas.google.com/g/2005" xmlns:batch='http://schemas.google.com/gdata/batch'>
  <entry>
    <id>https://sites.google.com/feeds/content/site/siteName/ENTRY_ID1</id>
    <batch:operation type="query"/>
  </entry>
  <entry>
    <batch:id>1</batch:id>
    <batch:operation type='insert'/>
    <category scheme="http://schemas.google.com/g/2005#kind"
        term="http://schemas.google.com/sites/2008#webpage" label="webpage"/>
    <title>New Webpage1</title>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">HTML body goes here</div>
    </content>
  </entry>
  <entry gd:etag="&quot;YDgpeyI.&quot;">
    <id>https://sites.google.com/feeds/content/site/siteName/ENTRY_ID2</id>
    <batch:operation type='update'/>
    <category scheme="http://schemas.google.com/g/2005#kind"
        term="http://schemas.google.com/sites/2008#webpage" label="webpage"/>
    <title>Updated Title for Webpage2</title>
    ...
    <batch:operaation type="update"/>
  </entry>
  <entry gd:etag="&quot;YassseyI.&quot;">
    <id>https://sites.google.com/feeds/content/site/siteName/ENTRY_ID3</id>
    <batch:operation type='delete'/>
  </entry>
</feed>

Zwrócony plik danych będzie zawierać 1 wpis z wynikami dla każdej operacji:

 
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/"
    xmlns:sites="http://schemas.google.com/sites/2008" xmlns:gs="http://schemas.google.com/spreadsheets/2006"
    xmlns:dc="http://purl.org/dc/terms" xmlns:batch="http://schemas.google.com/gdata/batch"
    xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0">
<id>https://sites.google.com/feeds/content/site/siteName/ENTRY_ID1</id>
<updated>2009-11-10T22:44:08.369Z</updated>
<title>Batch Feed</title>
<entry gd:etag="&quot;YDgpsdfeyI.&quot;">
  <id>https://sites.google.com/feeds/content/site/siteName/ENTRY_ID1</id>
  <published>2009-08-31T04:42:45.251Z</published>
  <updated>2009-10-25T22:46:13.729Z</updated>
  <app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-25T22:46:13.671Z</app:edited>
  <category scheme="http://schemas.google.com/g/2005#kind"
      term="http://schemas.google.com/sites/2008#webpage" label="webpage"/>
  <title>Page Title</title>
  ...
  <batch:status code="200" reason="Success"/>
  <batch:operation type="query"/>
</entry>
<entry gd:etag="&quot;YDsseyI.&quot;">
  <id>https://sites.google.com/feeds/content/site/siteName/ENTRY_ID4</id>
  <published>2009-11-10T22:44:08.531Z</published>
  <updated>2009-11-10T22:44:08.560Z</updated>
  <app:edited xmlns:app="http://www.w3.org/2007/app">2009-11-10T22:44:08.531Z</app:edited>
  <category scheme="http://schemas.google.com/g/2005#kind" term="http://schemas.google.com/sites/2008#webpage" label="webpage"/>
  <title>New Webpage1</title>
  <content type="xhtml">
    <div xmlns="http://www.w3.org/1999/xhtml">
    <table cellspacing="0" class="sites-layout-name-one-column sites-layout-hbox">
      <tbody>
        <tr>
          <td class="sites-layout-tile sites-tile-name-content-1">
            <div>HTML body goes here</div>
          </td>
        </tr>
      </tbody>
    </table>
  </div>
</content>
...
<batch:id>1</batch:id>
<batch:status code="201" reason="Created"/>
<batch:operation type="insert"/>
</entry>
<entry gd:etag="&quot;YDkpeyI.&quot;">
  <id>https://sites.google.com/feeds/content/site/siteName/ENTRY_ID2</id>
  <updated>2009-11-10T22:44:09.296Z</updated>
  <title>Updated Title for Webpage2</title>
  ...
  <sites:pageName>updated-title-for-webpage2</sites:pageName>
  <sites:revision>5</sites:revision>
  <batch:status code="200" reason="Success"/>
  <batch:operation type="update"/>
</entry>
<entry>
  <id>https://sites.google.com/feeds/content/site/siteName/ENTRY_ID3</id>
  <title>Deleted</title>
  <content>Deleted</content>
  <batch:status code="200" reason="Success"/>
  <batch:operation type="delete"/>
</entry>
</feed>

Powrót do góry