Przewodnik po protokołów

Klasyczny interfejs Google Sites API umożliwia aplikacjom dostęp do Witryn Google oraz ich publikowanie i modyfikowanie. Dodatkowo aplikacja może prosić o listę ostatnich działań, pobrać historię zmian oraz przesłać/pobrać załączniki i pliki.

Odbiorcy

W tym dokumencie zakładamy, że znasz ogólne idee protokołu interfejsów API danych Google.

Ten dokument jest przeznaczony dla programistów, którzy chcą tworzyć aplikacje klienckie umożliwiające współpracę z Witrynami Google. Artykuł zawiera serię przykładów podstawowych interakcji z interfejsem API danych za pomocą nieprzetworzonego kodu XML/HTTP wraz z objaśnieniami. Z tego dokumentu dowiesz się więcej na temat korzystania z interfejsu API przy użyciu naszych bibliotek klienckich, zapoznając się z przykładami dotyczącymi konkretnych języków, które znajdziesz w innych przewodnikach na pasku nawigacyjnym po lewej stronie.

Materiały dostępne w tym przewodniku znajdziesz w przewodniku.

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 API danych Witryn Google dotyczące niepublicznych danych użytkownika muszą być autoryzowane przez 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 podać 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 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 używasz biblioteki klienta.

Powrót do góry

Kanał witryny

Kanał witryny może służyć do wyświetlania listy Witryn Google, które należą do użytkownika lub do których ma uprawnienia do wyświetlania, a także do zmiany tytułu istniejącej witryny. W przypadku domen G Suite można też używać tej funkcji do tworzenia lub kopiowania całej witryny.

Wyświetlanie listy witryn

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 kanałuOpis
domainNamesite” lub domena Twojej hostowanej domeny G Suite (np. example.com).

Odpowiedź będzie zawierać kanał 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ć, stosując do kanału witryny kod POST HTTP, na przykład:

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ższe żądanie spowoduje utworzenie nowej witryny Google z motywem „Plansza” w domenie G Suite example.com. Adres URL tej witryny będzie wyglądał tak: http://sites.google.com/a/example.com/witryna-źródłowa/.

Jeśli witryna zostanie utworzona, serwer wyśle w odpowiedzi 201 Created. Wpis w odpowiedzi będzie zawierał elementy dodane przez serwer, takie jak link do witryny, link do kanału listy kontroli dostępu witryny, nazwę, 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ć tak samo jak tworzenie nowej witryny. Jednak we wpisie Atom żądania POST umieść <link> z atrybutem rel='source' wskazującym kanał witryny do skopiowania. Każda skopiowana witryna będzie miała ten link. 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ższe żądanie spowoduje skopiowanie witryny pod adresem http://sites.google.com/a/example.com/witryna-źródłowa/.

Ważne uwagi:

  • Można kopiować tylko witryny i szablony witryn należące do uwierzytelnionego użytkownika.
  • Szablon witryny można też skopiować. Witryna jest szablonem, jeśli na stronie ustawień Witryn Google zaznaczone jest ustawienie „Opublikuj tę witrynę jako szablon”.
  • Możesz skopiować witrynę z innej domeny – jeśli nie jesteś właścicielem witryny źródłowej.

Aktualizowanie metadanych witryny

Aby zaktualizować tytuł lub podsumowanie witryny, wyślij żądanie PUT HTTP do linku edit wpisu witryny. Na przykład w poniższym przykładzie tytuł poprzedniej witryny zostanie zmieniony na New Test Site2, a jego opis na 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 dla Twojej domeny zawierają metadane kategorii, które są przydatne do kategoryzowania witryn w Twojej domenie. Aby dodać lub zaktualizować metadane kategorii, wyślij żądanie HTTP PUT do linku edit wpisu dotyczącego Twojej witryny, który zawiera tag category. Zobacz pogrubioną linię 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>

W tym przykładzie edytujemy istniejącą witrynę i dodajesz do niej kategorię „Witryna zespołu”.

Możesz też dodać kilka kategorii, dodając kolejne tagi <category>. Spójrz na 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 dodano 2 kategorie: „Witryna zespołu” i „Dział prawny”.

Mapowania adresów internetowych

Mapowanie adresów internetowych umożliwia użytkownikom Witryn Google mapowanie własnych domen na witryny w Witrynach Google. Na przykład zamiast http://sites.google.com/a/domain.com/mysite można użyć http://www.mydomainsite.com. W zależności od tego, gdzie znajduje się Twoja witryna, możesz ręcznie zmienić mapowanie jej adresów internetowych. Więcej informacji znajdziesz w artykule w Centrum pomocy.

Pobieranie mapowania adresu internetowego witryny

Aby zwrócić mapowanie adresu internetowego witryny, pobierz wpis/kanał 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'. W powyższym przykładzie widać 3 elementy webAddressMapping prowadzące do witryny http://sites.google.com/site/myOtherTestSite.

Modyfikowanie mapowań adresów internetowych

Uwaga: podczas pracy z mapowaniem adresów internetowych wszystkie operacje GET/POST/PUT powinny określać parametr with-mappings=true. Jeśli ten parametr nie jest określony, parametry webAddressMapping nie będą zwracane we wpisach witryny (GET) ani uwzględniane podczas aktualizowania/usuwania mapowań (PUT) z wpisu.

Aby dodać, zaktualizować lub usunąć mapowanie, wystarczy określić, zmienić lub usunąć taki link podczas tworzenia nowych witryn lub aktualizowania metadanych witryny. W identyfikatorze URI pliku danych witryny należy podać parametr with-mappings=true. Uwaga: aby zaktualizować mapowania adresów, musisz być administratorem witryny lub domeny w przypadku witryny hostowanej w G Suite.

Na przykład poniższe żądanie aktualizuje mapowanie http://www.mysitemapping.com na http://www.my-new-sitemapping.com oraz usuwa http://www.mysitemapping2.com, pozostawiając link we wpisie:

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>

Uwaga: mapowanie adresów internetowych można też określić podczas tworzenia lub kopiowania witryny.

Powrót do góry

Lista aktywności

Możesz pobrać ostatnią aktywność w witrynie (zmiany), pobierając kanał aktywności. Każdy wpis w źródle aktywności zawiera informacje o zmianie w witrynie.

Aby przesłać zapytanie do kanału aktywności, wyślij żądanie HTTP GET na jego adres URL:

https://sites.google.com/feeds/activity/domainName/siteName
Parametr kanałuOpis
domainNamesite” lub domena Twojej hostowanej domeny G Suite (np. example.com).
siteNameNazwa przestrzeni internetowej Twojej witryny, która znajduje się w jej adresie URL (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 uzyskać dostęp do tego kanału, musisz być współpracownikiem lub właścicielem witryny. Klient musi wysłać prawidłowy nagłówek Authorization i odwoływać się do tokena uzyskanego w sekcji Autoryzacja żądań.

Powrót do góry

Plik danych wersji

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

https://sites.google.com/feeds/revision/domainName/siteName/CONTENT_ENTRY_ID
Parametr kanałuOpis
domainNamesite” lub domena Twojej hostowanej domeny G Suite (np. example.com).
siteNameNazwa przestrzeni internetowej Twojej witryny, która znajduje się w jej adresie URL (np. myCoolSite).

Aby znaleźć link do wersji danej strony/komentarza/załącznika/listy, najpierw pobierz wpis ze źródła treści, używając jego atrybutu CONTENT_ENTRY_ID. Pobrany wpis będzie zawierał parametr <atom:link> do kanału wersji. 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 uzyskać dostęp do tego kanału, musisz być współpracownikiem lub właścicielem witryny. Twój klient musi wysłać prawidłowy nagłówek Authorization i odwoływać się do tokena uzyskanego w sekcji Autoryzacja żądań.

Powrót do góry

Źródło treści

Pobieranie treści

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

https://sites.google.com/feeds/content/domainName/siteName
Parametr kanałuOpis
domainNamesite” lub domena Twojej hostowanej domeny G Suite (np. example.com).
siteNameNazwa przestrzeni internetowej Twojej witryny, która znajduje się w jej adresie URL (np. myCoolSite).

W rezultacie powstaje kanał zawierający pierwszą stronę wpisów z treścią w witrynie. Każdy wpis w kanale reprezentuje inny typ wpisu, np. webpage, filecabinet, attachment, comment itp. Element <category scheme="http://schemas.google.com/g/2005#kind"> określa typ wpisu. Listę obsługiwanych wartości kind znajdziesz w przewodniku.

Uwaga: ten kanał może lub nie wymagać uwierzytelniania w zależności od uprawnień do udostępniania witryny. Jeśli witryna nie jest publiczna, klient musi wysłać prawidłowy nagłówek Authorization (jak widać w przykładzie powyżej) i odwołać się do tokena uzyskanego w sekcji Autoryzacja żą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 przejrzeć cały kanał treści, kliknij link „Dalej”:

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

Objaśnienie typowych elementów Atom znajdziesz w dokumentacji protokołu Google Data Protocol. Elementy, które mają związek z klasyczną wersją interfejsu API Witryn, zostały opisane poniżej. Niektóre wpisy 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" ...>Atrybut href wskazuje kanał wersji wpisu.
<link rel="http://schemas.google.com/sites/2008#parent" ...>Atrybut href wskazuje wpis nadrzędny we wpisie.
<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 oznacza, że wpis jest szablonem.
<gd:feedLink>Atrybut href wskazuje elementy podrzędne elementu nadrzędnego wpisu.
<sites:pageName>Nazwa przestrzeni internetowej strony odpowiadająca nazwie w adresie URL strony.
<sites:revision>Numer bieżącej wersji.

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

W źródle treści możesz przeszukiwać niektóre standardowe parametry zapytań interfejsu Google Data API oraz parametry charakterystyczne dla klasycznej wersji interfejsu Sites API. 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. W tym przykładzie zwracamy tylko tyle wpisów: webpage:

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

Aby zwrócić więcej niż jeden typ wpisu, oddziel każdy element kind znakiem „,”. W tym przykładzie zwracamy wpisy filecabinet i listpage:

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

Możesz też użyć standardowego formatu zapytania /-/category danych Google zamiast parametru kind:

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

Pobieranie szablonów stron

W tym przykładzie zwracana jest tylko liczba stron (template):

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

Aby zwrócić wszystkie typy wpisów i uwzględnić strony template, użyj polecenia:

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

Pobieranie stron według ścieżki

Jeśli znasz względną ścieżkę strony w Witrynach Google, możesz użyć parametru path, aby pobrać tę konkretną stronę. W tym przykładzie zostanie zwrócona strona http://sites.google.com/site/siteName/path/to/the/page:

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

Pobieranie wszystkich wpisów ze strony nadrzędnej

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

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

Z uwzględnieniem 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 obejmuje wersje robocze wpisów w źródle treści:

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

Wyszukiwanie całego tekstu

Aby przeszukać całą treść witryny, użyj parametru q w celu przeprowadzenia wyszukiwania pełnotekstowego:

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 do przechowywania plików, strony z ogłoszeniami itp.) można tworzyć, wysyłając żądania HTTP POST do źródła treści:

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

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

Tworzenie nowych elementów / stron

W tym przykładzie tworzony jest nowy element webpage w najwyższym poziomie witryny, zawierający w treści strony kod XHTML oraz tytuł nagłówka „Tytuł nowej 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 w odpowiedzi wyświetli 201 Created i kopię wpisu.

Tworzenie elementów/stron w ramach niestandardowych ścieżek adresów URL

Domyślnie poprzedni przykład ma adres URL http://sites.google.com/domainName/siteName/new-webpage-title i jego nagłówek to „Tytuł nowej strony internetowej”. Oznacza to, że parametr <atom:title> jest znormalizowany w przypadku adresu URL do wartości new-webpage-title. Aby dostosować ścieżkę adresu URL strony, możesz ustawić element <sites:pageName>.

W tym przykładzie tworzony jest nowy obiekt filecabinet z nagłówkiem strony „Magazyn plików”, ale strona pod adresem URL http://sites.google.com/domainName/siteName/files jest tworzona 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 używa tych reguł pierwszeństwa do nazewnictwa ścieżki adresu URL strony:

  1. <sites:pageName> (jeśli występuje). Musi spełniać następujące kryteria: a-z, A-Z, 0-9, -, _.
  2. <atom:title>, jeśli parametr pageName nie występuje, nie może mieć wartości null. Normalizacja polega na obcięciu i zwinięciu odstępów do znaku „-” oraz usuwaniu znaków, które nie pasują do a-z, A-Z, 0-9, -, _.

Na przykład „Strona_własna2” jest akceptowana przez serwer.

Tworzenie podstron

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

W tym przykładzie na stronie z nadrzędną stroną ogłoszenia o identyfikatorze pozycji PARENT_ENTRY_ID zostaje utworzony nowy obiekt announcement o nagłówku „Ogłoszenie”. Zawartość XHTML w treści strony obejmuje również:

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 wygląda tak samo jak tworzenie nowych elementów/stron i tworzenie podstron.Różnica polega na dodaniu parametru category z hasłem 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 szablonów stron możesz utworzyć instancję nowej strony z szablonu, dodając element <link> z atrybutem rel='http://schemas.google.com/sites/2008#template', który wskazuje własny link do szablonu strony.

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

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 określa atrybut <category>, wstawienie go w Twoim wpisie jest nadal wymagane. Pamiętaj też, że jeśli umieścisz element <content>, serwer go odrzuci.

Przesyłam pliki

Interfejs API (podobnie jak w przypadku Witryn Google) umożliwia przesyłanie załączników do stron magazynów plików i stron nadrzędnych.

Aby przesłać załącznik do elementu nadrzędnego, wyślij żądanie HTTP POST na adres URL pliku danych:

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

Treść POST powinna być wieloczęściowym żądaniem MIME, aby połączyć zawartość pliku z elementem <atom:entry> zawierającym metadane załącznika. Element <atom:entry> powinien odwoływać się do linku własnego wpisu nadrzędnego, aby określić miejsce utworzenia załącznika. 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 (opcjonalnie) 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 w odpowiedzi prześle komunikat 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 elemencie 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 specjalne rodzaje załączników. Są to więc linki do innych plików w internecie, które możesz dodać do magazynu plików. Ta funkcja działa analogicznie 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 strony innego typu.

W tym przykładzie tworzony jest plik webattachment znajdujący się w magazynie plików, do którego odwołuje się identyfikator FILECABINET_ENTRY_ID. Jego tytuł i (opcjonalny) opis są ustawione na „Logo Google” i „ładne kolory”.

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>

Element POST tworzy w magazynie plików użytkownika link wskazujący obraz pod adresem „http://www.google.com/images/logo.gif”.

Powrót do góry



Aktualizowanie treści

Metadane (tytuł, nazwa strony itp.) oraz zawartość dowolnej strony można edytować za pomocą pojedynczego żądania PUT do linku edit. Treść żądania powinna zawierać wpis Atom opisujący zaktualizowaną stronę. Wyjątkiem od tej reguły jest wpis załącznika, którego można używać tylko do aktualizowania metadanych załącznika. Aby zmienić treść załączonego pliku, wystarczy umieścić nieprzetworzone dane jako treść żądania PUT do linku edit-media załącznika. Możesz też zaktualizować zarówno metadane, jak i zawartość załączonego pliku jednocześnie, używając żądania wieloczęściowego MIME.

Aby potwierdzić, że Twoja aktualizacja nie zastępuje zmian innego klienta, dołącz wartość ETag oryginalnego wpisu. Aby to zrobić, podaj wartość ETag w nagłówku HTTP If-Match lub dodaj atrybut gd:etag oryginalnego wpisu do zaktualizowanego wpisu. Aby określić wartość ETag w pierwotnym wpisie, sprawdź atrybut gd:etag elementu <entry>. W przypadku wpisów dotyczących mediów tag ETag mediów może być dostępny w atrybucie gd:etag linku edit-media.

Jeśli chcesz zaktualizować wpis niezależnie od tego, czy ktoś inny aktualizował ten wpis od czasu jego pobrania, użyj If-Match: * i nie dodawaj elementu ETag. Więcej informacji o elementach ETag znajdziesz w przewodniku po interfejsach API danych Google.

Aktualizowanie metadanych elementu lub treści HTML

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

Poniżej zamieściliśmy przykład aktualizowania wpisu listpage (reprezentowanego przez identyfikator ENTRY_ID) za pomocą tych zmian:

  • Tytuł został zmieniony na „Zaktualizowana treść”
  • Zaktualizowane treści HTML
  • Pierwszy nagłówek kolumny listy 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="Decription"/>
    <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 znajduje się przykład zastąpienia zawartości załącznika bez zmian metadanych. Żądanie zawiera nową treść, więc używany jest link edit-media wpisu 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łączników

Poniżej przedstawiliśmy przykład aktualizowania metadanych załącznika i jego zawartości jednocześnie. Nazwa załączników zostanie zmieniona na „Nowy tytuł”, a jej zawartość zostanie zastąpiona zawartością pliku ZIP. Żądanie zawiera nową treść pliku, dlatego używany jest link edit-media wpisu załącznika.

Pamiętaj, że dołączenie parametru ETag do metadanych zapewnia niejawną właściwość If-Match dla treści multimedialnych, ponieważ każda aktualizacja treści multimedialnych powoduje zmianę parametru 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



Usuwam treści

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

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 wysyła odpowiedź 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 wartość ETag oryginalnego wpisu. Możesz określić wartość ETag oryginalnego wpisu, sprawdzając atrybut gd:etag elementu <entry>.

Jeśli chcesz usunąć wpis niezależnie od tego, czy ktoś inny aktualizował ten wpis od czasu jego pobrania, użyj If-Match: * i nie dodawaj elementu ETag. W takim przypadku nie musisz pobierać wpisu przed jego usunięciem.

Więcej informacji o klasach 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 uwierzytelnianie HTTP GET do jego linku źródłowego <content>. Przykład linku do treści 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

Kanał ACL

Omówienie uprawnień do udostępniania (listy kontroli dostępu)

Każdy wpis na liście kontroli dostępu (ACL) reprezentuje rolę dostępu określonego elementu: użytkownika, grupy użytkowników, domeny lub domyślnego dostępu (witryny publicznej). Wpisy będą wyświetlane tylko w przypadku jednostek z jednoznacznym dostępem. Dla każdego adresu e-mail będzie wyświetlany jeden wpis w panelu „Osoby z dostępem” na ekranie udostępniania w interfejsie Witryn Google. Z tego względu administratorzy domen nie będą widoczni, nawet jeśli mają pośredni dostęp do witryny.

Role

Element roli określa poziom dostępu, który może mieć encja. Element gAcl:role może mieć 4 wartości:

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

Zakresy

Element zakresu reprezentuje jednostkę, która ma ten poziom dostępu. Istnieje 5 typów elementu gAcl:scope:

  • user – wartość adresu e-mail, np. „użytkownik@gmail.com”.
  • grupa – adres e-mail Grupy dyskusyjnej Google, np. „grupa@domena.com”.
  • domena – nazwa domeny G Suite, np. „domena.com”.
  • invite – użytkownik, który został zaproszony do witryny, ale nie został jeszcze dodany do listy kontroli dostępu 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 żadnej wartości (np.<gAcl:scope type="default">). Ten konkretny zakres kontroluje domyślne uprawnienia dostępu każdego użytkownika do witryny publicznej.

Uwaga: domeny nie mogą mieć wartości gAcl:role ustawionej na dostęp „właściciel”. Mogą to być tylko czytelnicy lub pisarze.

Informacje o zakresie „invite”.

Interfejs API zwraca zakres zaproszeń, gdy dodasz do listy ACL co najmniej jednego 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 mogli zaakceptować zaproszenie.

Ta metoda zaproszenia pozwala zapraszać użytkowników spoza Google bez wcześniejszej wiedzy o tym, którego adresu e-mail chcą użyć. Użytkownicy mogą zarejestrować się i uzyskać dostęp za pomocą dowolnego adresu e-mail, jeśli klikną adres URL zaproszenia z osadzonym tokenem. Ponadto wielu użytkowników może użyć tego adresu URL do zaakceptowania zaproszenia, co może być przydatne, jeśli zapraszasz jednego użytkownika lub grupę użytkowników.

Uwaga: zakres „invite” jest dostępny tylko w Gdatach w wersji 1.4 i nowszych. Ta metoda nie zadziała, jeśli wyraźnie określisz wersję 1.3 lub niższą.

Pobieranie kanału ACL

Kanału listy ACL można używać do kontrolowania uprawnień do udostępniania witryny i jest dostępny za pomocą następującego identyfikatora URI:

https://sites.google.com/feeds/acl/site/domainName/siteName
Parametr kanałuOpis
domainNamesite” lub domena Twojej hostowanej domeny G Suite (np. example.com).
siteNameNazwa przestrzeni internetowej Twojej witryny, która znajduje się w jej adresie URL (np. myCoolSite).

Warto pamiętać, że każdy wpis w kanale witryny zawiera link do takiego kanału:

 <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 witryny do udostępniania, wyślij żądanie HTTP GET do identyfikatora URI kanału ACL:

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

Serwer w odpowiedzi wyświetli 200 OK i kanał wpisów na liście kontroli dostępu:

<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

Plik danych listy kontroli dostępu (ACL) akceptuje żądania GET, POST i PUT. Aby wstawić nową rolę do kanału listy kontroli dostępu, wystarczy wysłać żądanie POST do kanału listy kontroli dostępu witryny.

Uwaga: niektóre listy kontroli dostępu (ACL) mogą być dostępne tylko wtedy, gdy domena jest skonfigurowana tak, by zezwalać na takie uprawnienia (np.włączone jest udostępnianie poza domenę w przypadku domen G Suite itp.).

W tym przykładzie dodano do witryny nowego współpracownika (scenarzysta):

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>

Jeśli uda się wstawić reklamę, 201 Created i nowy wpis zostaną zwrócone:

<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 bez kont Google, interfejs API zwróci URL, który musisz podać tym użytkownikom, których chcesz zaprosić. Po kliknięciu adresu URL będą mogli uzyskać dostęp do witryny, logując się na istniejące konto lub tworząc nowe.

Pomyślne zaproszenie zwraca 201 Created i nowy wpis zawierający 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 jednemu użytkownikowi, możesz udostępnić witrynę w grupie dyskusyjnej Google lub domenie G Suite. Niezbędne wartości parametru scope są wymienione poniżej.

Udostępnianie adresu e-mail grupy:

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

Udostępnianie w całej domenie:

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

Udostępnianie na poziomie domeny jest obsługiwane tylko w domenach G Suite i tylko w domenie, w której znajduje się witryna. Na przykład witryna http://sites.google.com/a/domena1.com/witrynaA może udostępnić całą witrynę tylko domenie domena1.com, a nie 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 na liście kontroli dostępu, zmodyfikuj go i w razie potrzeby wyślij żądanie HTTP PUT do linku edit wpisu – elementu <link>, którego atrybut „rel” ma wartość „edit”. W poprzednim przykładzie ten link:

<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 „odczytujący”:

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 prośbę DELETE do tego samego połączenia edit, które zostało użyte w żądaniu 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 200 OK.

Powrót do góry

Tematy specjalne

Ponowne pobieranie kanału lub wpisu

Jeśli chcesz pobrać pobrany wcześniej kanał lub wpis, możesz zwiększyć wydajność, informując serwer, że ma wysłać listę lub wpis tylko wtedy, gdy zmieniły się od czasu ostatniego pobrania.

Aby korzystać z tego rodzaju pobierania warunkowego, wyślij żądanie HTTP GET z nagłówkiem HTTP If-None-Match. W nagłówku określ tag ETag listy lub wpisu, który znajdziesz w atrybucie gd:etag elementu <feed> lub <entry>.

Przykład wykorzystania kanału witryny:

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

Po otrzymaniu tego żądania serwer sprawdza, czy żądany element ma taki sam tag ETag jak określony przez Ciebie tag ETag. Jeśli parametry ETag są zgodne, element nie uległ zmianie, a serwer zwraca kod stanu HTTP 304 Not Modified lub kod stanu HTTP 412 Precodition Failed. Oba kody stanu wskazują, że pobrany element jest aktualny.

Jeśli identyfikatory ETag nie są zgodne, oznacza to, że element został zmodyfikowany od ostatniego żądania tego żądania, a serwer go zwraca.

Więcej informacji o klasach ETag znajdziesz w Przewodniku po interfejsach API danych Google.

Przetwarzanie wsadowe

Żądania zbiorcze umożliwiają klientowi wykonanie wielu operacji w jednym żądaniu, zamiast przesyłania każdej operacji pojedynczo.

Serwer wykona jak najwięcej żądanych zmian i zwróci informacje o stanie, na podstawie których możesz ocenić powodzenie lub niepowodzenie poszczególnych operacji. Więcej informacji o przetwarzaniu wsadowym w interfejsie Google Data API znajdziesz w artykule Przetwarzanie wsadowe za pomocą interfejsów API danych Google.

Każda operacja w zbiorczym pliku danych zawiera element <id>, z wyjątkiem operacji wstawiania. Ten element jest taki sam jak 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 zmianę, ustaw <id> na link edit dotyczący danego wpisu. Służy do identyfikowania pozycji docelowej. Nowe wpisy nie mają elementów <id>, ponieważ nie zostały jeszcze utworzone. Zamiast tego możesz w parametrze <batch:id> zdefiniować wartość ciągu, która zostanie zwrócona w odpowiedzi serwera i wykorzystana do wyszukania odpowiedniego wpisu.

Aby utworzyć żądanie zbiorcze, utwórz plik danych i wyślij do niego link POST HTTP:

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

Z przykładu poniżej dowiesz się, jak tworzyć zapytania, wstawiać, aktualizować i usuwać wpis na stronie 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 kanał będzie zawierał jeden wynik 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