Руководство по протоколу

API классической версии Google Сайтов позволяет приложениям получать доступ к контенту на сайте Google, а также публиковать и изменять его. Кроме того, ваше приложение может запрашивать список недавних действий, получать историю изменений, а также загружать и скачивать прикрепленные файлы.

Аудитория

В этом документе предполагается, что вы понимаете общие принципы работы протокола Google Data API.

Этот документ предназначен для программистов, которые хотят создавать клиентские приложения, взаимодействующие с Google Сайтами. В нем приведено несколько примеров базовых взаимодействий с Data API с использованием необработанных XML/HTTP, а также пояснения к ним. Прочитав этот документ, вы можете узнать больше о взаимодействии с API с помощью наших клиентских библиотек, ознакомившись с примерами для конкретных языков, которые можно найти в других руководствах на левой панели навигации.

Дополнительную информацию можно найти в справочном руководстве.

Авторизация запросов

Когда приложение запрашивает закрытые пользовательские данные, оно должно предоставить токен авторизации. который одновременно является идентификатором этого приложения для Google.

Протоколы авторизации

Для авторизации запросов ваше приложение должно использовать протокол OAuth 2.0. Другие протоколы авторизации не поддерживаются. Если в вашем приложении используется вход с аккаунтом Google, некоторые действия в рамках авторизации выполняются автоматически.

Авторизация запросов с помощью протокола OAuth 2.0

Запросы к Google Сайты Data API на получение закрытых пользовательских данных должны быть авторизованы пользователем, прошедшим аутентификацию.

Особенности процесса авторизации с помощью OAuth 2.0 зависят от типа приложения. В общих чертах процедура выглядит так:

  1. Сначала приложение нужно зарегистрировать через Google API Console. В результате вы получите информацию, которая понадобится вам позже, например идентификатор клиента и секретный код клиента.
  2. Вы активируете Google Sites Data API в Google API Console. Если такого API в консоли нет, пропустите этот шаг.
  3. Если приложению требуются пользовательские данные, оно запрашивает у Google нужную область доступа.
  4. Google показывает пользователю окно запроса доступа с предложением авторизовать приложение для запроса этих данных.
  5. Если пользователь соглашается, Google предоставляет приложению токен доступа с коротким сроком действия.
  6. Ваше приложение запрашивает пользовательские данные, указывая токен доступа.
  7. Получив действительный запрос и токен, Google отправляет необходимые данные.

Иногда процесс может включать дополнительные этапы, например использование токенов обновления для получения новых токенов доступа. Подробную информацию о процедуре для приложений различных типов можно найти в документации по OAuth 2.0.

Информация об области действия OAuth 2.0 для Google Сайтов Data API:

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

Чтобы запросить доступ по протоколу OAuth 2.0, приложению нужна информация об области доступа, а также данные, которые Google предоставляет при регистрации приложения (например, идентификатор клиента или секретный код клиента).

К началу

Как указать версию

Во всех запросах к Google Сайты Data API должна быть указана версия 1.4. Чтобы указать номер версии, используйте HTTP-заголовок GData-Version:

GData-Version: 1.4

Если вы не можете задать HTTP-заголовки, укажите v=1.4 в качестве параметра запроса в URL. Однако по возможности рекомендуется использовать HTTP-заголовок.

Примечание. Клиентские библиотеки автоматически предоставляют заголовки нужной версии, поэтому при их использовании не нужно указывать параметр запроса v=1.4.

К началу

Фид сайта

Фид сайта можно использовать для получения списка сайтов Google, которыми владеет пользователь или на просмотр которых у него есть разрешение, а также для изменения названия существующего сайта. В доменах G Suite с помощью этого инструмента можно создавать и копировать сайты.

Сайты с объявлениями

Чтобы получить список сайтов, к которым у пользователя есть доступ, отправьте аутентифицированный запрос GET на следующий URL:

https://sites.google.com/feeds/site/domainName
Параметр фидаОписание
domainNamesite или домен, размещенный в G Suite (например, example.com).

Ответ будет содержать фид со списком сайтов:

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>

Сайты перечислены в алфавитном порядке.

Создание новых сайтов

Примечание. Эта функция доступна только для доменов G Suite.

Новые сайты можно создавать, отправляя HTTP-запрос POST в фид сайтов, например:

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>

В результате выполнения этого запроса будет создан новый сайт Google с темой Slate в домене G Suite example.com. URL сайта будет выглядеть так: http://sites.google.com/a/example.com/source-site/.

Если сайт создан успешно, сервер вернет ответ 201 Created. Запись ответа будет содержать элементы, добавленные сервером, такие как ссылка на сайт, ссылка на фид ACL сайта, название сайта, заголовок и сводка.

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

Копирование сайта

Примечание. Эта функция доступна только для доменов G Suite.

Существующий сайт можно скопировать так же, как и создать новый. Однако в записи Atom запроса POST добавьте элемент <link> с атрибутом rel='source', указывающим на фид копируемого сайта. Эта ссылка будет у любого скопированного сайта. Вот пример копирования сайта:

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>

Приведенный выше запрос скопирует сайт по адресу http://sites.google.com/a/example.com/source-site/.

Важные моменты:

  • Копировать можно только сайты и шаблоны сайтов, принадлежащие пользователю, прошедшему аутентификацию.
  • Шаблон сайта также можно скопировать. Сайт считается шаблоном, если на странице настроек Google Сайтов установлен флажок "Опубликовать этот сайт как шаблон".
  • Вы можете скопировать сайт из другого домена, если вы указаны в качестве владельца исходного сайта.

Обновление метаданных сайта

Чтобы изменить название или описание сайта, отправьте HTTP-запрос PUT по ссылке edit, которая относится к записи сайта. Например, в следующем примере заголовок предыдущего сайта будет изменен на New Test Site2, а его описание – на 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>

Добавление категорий

Примечание. Эта функция доступна только для доменов G Suite.

Сайты G Suite для вашего домена включают метаданные категорий, которые полезны для категоризации сайтов в вашем домене. Чтобы добавить или обновить метаданные категории, отправьте HTTP-запрос PUT на URL edit, указанный в записи сайта, включив в него тег category. (выделенная строка в примере ниже).

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>

В этом примере существующий сайт редактируется и добавляется категория "Сайт команды".

Вы также можете добавить несколько категорий, используя дополнительные теги <category>. Обратите внимание на выделенные полужирным шрифтом строки в примере ниже.

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>

В этом примере добавляются две категории: "Сайт команды" и "Юридический отдел".

Сопоставления веб-адресов

Сопоставление веб-адресов позволяет пользователям Google Сайтов сопоставлять собственные домены с сайтами на платформе Google. Например, вместо http://sites.google.com/a/domain.com/mysite можно использовать http://www.mydomainsite.com. В зависимости от того, где размещен ваш сайт, вы можете вручную изменить сопоставление веб-адресов. Подробнее…

Получение сопоставлений веб-адресов сайта

Чтобы получить сопоставления веб-адресов для сайта, извлеките запись или фид сайта с параметром 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>

Существующие сопоставления будут показаны как link с rel='webAddressMapping'. Например, в приведенном выше примере есть три элемента webAddressMapping, которые указывают на сайт http://sites.google.com/site/myOtherTestSite.

Изменение сопоставлений веб-адресов

Примечание. При работе с сопоставлениями веб-адресов во всех операциях GET/POST/PUT должен быть указан параметр with-mappings=true. Если параметр отсутствует, webAddressMappings не будет возвращаться в записях сайта (GET) или учитываться при обновлении/удалении (PUT) сопоставлений из записи.

Чтобы добавить, изменить или удалить сопоставление, просто укажите, измените или удалите ссылку при создании новых сайтов или обновлении метаданных сайта. Параметр with-mappings=true должен быть включен в URI фида сайта. Примечание. Чтобы обновить сопоставление адресов, вы должны быть администратором сайта или администратором домена (если сайт размещен в G Suite).

Например, запрос ниже обновляет сопоставление http://www.mysitemapping.com с http://www.my-new-sitemapping.com и удаляет http://www.mysitemapping2.com, исключая ссылку из записи:

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>

Обратите внимание, что сопоставление веб-адресов также можно указать при создании или копировании сайта.

К началу

Фид действий

Вы можете получить информацию о недавних действиях (изменениях) на сайте, запросив фид действий. Каждая запись в фиде действий содержит информацию об изменении, внесенном на сайт.

Чтобы запросить фид действий, отправьте HTTP-запрос GET на URL фида действий:

https://sites.google.com/feeds/activity/domainName/siteName
Параметр фидаОписание
domainNamesite или домен, размещенный в G Suite (например, example.com).
siteNameНазвание веб-пространства сайта, которое можно найти в URL сайта (например, myCoolSite).

Пример запроса и ответа:

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>

Примечание. Доступ к этой ленте есть только у соавторов и владельцев сайта. Клиент должен отправить правильный заголовок Authorization и сослаться на токен, полученный в разделе Авторизация запросов.

К началу

Фид изменений

Чтобы получить историю изменений для любой записи контента, отправьте запрос HTTP GET по ссылке на изменения записи:

https://sites.google.com/feeds/revision/domainName/siteName/CONTENT_ENTRY_ID
Параметр фидаОписание
domainNamesite или домен, размещенный в G Suite (например, example.com).
siteNameНазвание веб-пространства сайта, которое можно найти в URL сайта (например, myCoolSite).

Чтобы найти ссылку на изменения для определенной страницы, комментария, прикрепленного файла или элемента списка, сначала получите запись из фида контента, используя ее идентификатор CONTENT_ENTRY_ID. Полученная запись будет содержать элемент <atom:link>, указывающий на фид версий. Пример:

<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"/>

Пример запроса и ответа:

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>

Примечание. Доступ к этой ленте есть только у соавторов и владельцев сайта. Клиент должен отправить правильный заголовок Authorization и сослаться на токен, полученный на этапе авторизации запросов.

К началу

Фид

Получение контента

Фид контента содержит список текущего контента сайта. Отправьте аутентифицированный запрос GET на следующий URL:

https://sites.google.com/feeds/content/domainName/siteName
Параметр фидаОписание
domainNamesite или домен, размещенный в G Suite (например, example.com).
siteNameНазвание веб-пространства сайта, которое можно найти в URL сайта (например, myCoolSite).

В результате вы получите фид, в котором перечислены записи контента с первой страницы сайта. Каждая запись в фиде представляет собой отдельный тип контента, например webpage, filecabinet, attachment, comment и т. д. Тип записи определяется элементом <category scheme="http://schemas.google.com/g/2005#kind">. Список поддерживаемых значений kind приведен в справочном руководстве.

Примечание. Для доступа к фиду может требоваться аутентификация в зависимости от настроек доступа к сайту. Если сайт не является общедоступным, клиент должен отправить правильный заголовок Authorization (как в примере выше) и указать токен, полученный на этапе авторизации запросов.

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>

Примечание. Это только первые несколько результатов. Чтобы просмотреть весь фид контента, перейдите по ссылке next:

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

Описание элементов, общих для Atom, можно найти в справочнике по протоколу Google Data. Элементы, имеющие особое значение для Sites API классической версии Сайтов, описаны ниже. У некоторых записей kind будут дополнительные свойства (не перечисленные ниже), а у других – нет. Например, в записи listitem могут быть элементы <gs:field>, а в записи webpage – нет.

ЭлементОписание
<content ...>Внутренний текст – это тело HTML-кода страницы. Для некоторых записей (например, прикрепленных файлов) этот элемент будет содержать атрибут src, указывающий на файл.
<link rel="alternate" ...>Ссылка на страницу или объект в Google Сайтах.
<link rel="http://schemas.google.com/sites/2008#revision" ...>Атрибут href указывает на фид версий записи.
<link rel="http://schemas.google.com/sites/2008#parent" ...>Атрибут href указывает на родительскую запись.
<link rel="http://schemas.google.com/sites/2008#template" ...>Атрибут href указывает на страницу шаблона записи.
<category scheme="http://schemas.google.com/g/2005#kind" ...>label – тип записи.
<category term="http://schemas.google.com/g/2005#template" ...>label=template, указывающий на то, что запись является шаблоном.
<gd:feedLink>Атрибут href указывает на дочерние элементы родительского элемента записи.
<sites:pageName>Название веб-пространства страницы, соответствующее названию в URL страницы.
<sites:revision>Текущий номер версии.

Примеры запросов фида контента

Для поиска в фиде контента можно использовать некоторые стандартные параметры запросов Google Data API и параметры, относящиеся к API классической версии Сайтов. Подробную информацию и полный список поддерживаемых параметров можно найти в справочном руководстве.

Получение записей определенного типа

Чтобы получить только определенный тип записи, используйте параметр kind. В этом примере возвращаются только записи webpage:

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

Чтобы получить записи нескольких типов, перечислите их kind через запятую. В примере ниже возвращаются записи filecabinet и listpage.

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

Вместо параметра kind можно использовать стандартный формат запроса /-/category Google Data:

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

Получаю шаблоны страниц

В этом примере возвращаются только страницы template:

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

Чтобы получить все типы записей и включить страницы template, используйте:

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

Получение страницы по пути

Если вы знаете относительный путь к странице на Google Сайте, то можете использовать параметр path, чтобы получить эту страницу. В этом примере будет возвращена страница, расположенная по адресу http://sites.google.com/site/siteName/path/to/the/page:

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

Как получить все записи на родительской странице

Если вы знаете идентификатор записи страницы, то можете использовать параметр parent, чтобы получить все ее дочерние записи (если они есть):

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

Включая черновики и удаленные записи

Чтобы включить черновики или удаленные записи, используйте параметры include-drafts или include-deleted соответственно. В этом примере в фид контента включены черновики:

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

Полнотекстовый поиск

Чтобы выполнить полнотекстовый поиск по всему контенту сайта, используйте параметр q:

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

К началу



Создание контента

Чтобы создать новый контент (веб-страницы, страницы со списками, страницы с файлами, страницы новостей и т. д.), отправьте запрос HTTP POST в фид контента:

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

Список поддерживаемых типов записей приведен в описании параметра kind в справочном руководстве.

Создание объектов и страниц

В этом примере создается новая страница webpage на верхнем уровне сайта, добавляется код XHTML для тела страницы и задается заголовок "Новый заголовок веб-страницы".

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>

Если запрос выполнен успешно, сервер возвращает код 201 Created и копию записи.

Создание объектов/страниц по собственным путям URL.

По умолчанию страница из предыдущего примера будет создана по URL http://sites.google.com/domainName/siteName/new-webpage-title и будет иметь заголовок "Новый заголовок веб-страницы". То есть <atom:title> нормализуется до new-webpage-title для URL. Чтобы настроить путь URL страницы, можно задать элемент <sites:pageName>.

В этом примере создается новый объект filecabinet с заголовком страницы File Storage, но страница создается по URL http://sites.google.com/domainName/siteName/files, поскольку указан элемент <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>

При создании пути URL страницы сервер использует следующие правила приоритета:

  1. <sites:pageName>, если оно есть. Должно соответствовать a-z, A-Z, 0-9, -, _.
  2. <atom:title> не должно быть нулевым, если pageName отсутствует. Нормализация заключается в удалении пробелов и замене их на дефисы, а также в удалении символов, не соответствующих a-z, A-Z, 0-9, -, _.

Например, сервер примет значение Custom_Page2.

Как создать подстраницу

Чтобы создать дочерние подстраницы для родительской страницы, добавьте в новую запись Atom элемент <link rel="http://schemas.google.com/sites/2008#parent">. Задайте для атрибута href ссылки значение ссылки на текущую страницу родительской записи.

В этом примере создается новая страница announcement с заголовком announcement в родительской странице новостей с идентификатором записи PARENT_ENTRY_ID. Также включен контент XHTML для тела страницы:

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>

Шаблоны страниц

Создание шаблонов страниц

Процесс создания шаблона страницы аналогичен созданию новых элементов/страниц и созданию подстраниц.Разница заключается в добавлении элемента category с атрибутами term и label, для которых заданы значения http://schemas.google.com/g/2005#template и template соответственно.

В этом примере создается новый шаблон 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>

Создание страниц на основе шаблона

Как и при создании шаблонов страниц, вы можете создать экземпляр новой страницы из шаблона, включив <link> с rel='http://schemas.google.com/sites/2008#template', указывающим на ссылку на текущую страницу шаблона страницы.

В этом примере создается новая страница filecabinet на основе существующего шаблона страницы, который определяет картотеку.

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>

<category>Примечание. Несмотря на то что в шаблоне определен параметр , его все равно необходимо включить в запись. Если вы добавите элемент <content>, сервер отклонит его.

Загрузка файлов.

Как и в Google Сайтах, API позволяет загружать прикрепленные файлы на страницы картотек и родительские страницы.

Чтобы загрузить прикрепленный файл в родительский объект, отправьте HTTP-запрос POST на URL фида контента:

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

Тело запроса POST должно быть составным запросом MIME, чтобы объединить содержимое файла с объектом <atom:entry>, содержащим метаданные прикрепленного файла. В поле <atom:entry> должна быть указана ссылка на родительскую запись, чтобы было понятно, где будет создано прикрепление. Подробнее о том, как создавать подстраницы…

Загрузка прикрепленных файлов…

Ниже приведен пример загрузки PDF-файла в картотеку с идентификатором PARENT_ENTRY_ID. Будет создано прикрепление с названием "PDF-файл" и описанием "Пакет документов для отдела кадров" (необязательно).

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

Если загрузка прошла успешно, сервер вернет ответ 201 Created и копию созданной записи о прикрепленном файле.

Загрузка прикрепленного файла в папку

Чтобы загрузить прикрепленный файл в существующую папку в filecabinet, добавьте категорию с атрибутом term, значением которого будет название папки:

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

Прикрепленные файлы в интернете

Веб-прикрепления – это особый вид прикреплений. По сути, это ссылки на другие файлы в интернете, которые можно добавить в списки картотеки. Эта функция аналогична методу загрузки "Добавить файл по URL" в интерфейсе Google Сайтов.

Примечание. Веб-прикрепления можно создавать только в картотеке. Их нельзя загрузить на страницы других типов.

В этом примере создается webattachment в картотеке с идентификатором FILECABINET_ENTRY_ID. Название и описание (необязательно) заданы как GoogleLogo и 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>

POST создает в картотеке пользователя ссылку на изображение по адресу http://www.google.com/images/logo.gif.

К началу



Обновление контента

Метаданные (название, название страницы и т. д.) и контент любой страницы можно изменить с помощью одного запроса PUT к ссылке edit. Тело запроса должно содержать запись Atom, описывающую обновленную страницу. Исключением является запись о прикрепленном файле, которую можно использовать только для обновления метаданных этого файла. Чтобы изменить содержимое прикрепленного файла, просто включите необработанные данные в тело запроса PUT к ссылке edit-media прикрепленного файла. Вы также можете одновременно обновить метаданные и содержимое прикрепленного файла, используя составной запрос MIME.

Чтобы убедиться, что ваше обновление не перезапишет изменения другого клиента, включите значение ETag исходной записи. Для этого укажите значение ETag в заголовке HTTP If-Match или добавьте атрибут gd:etag исходной записи в обновленную. Чтобы определить значение ETag исходной записи, проверьте атрибут gd:etag элемента <entry>. Для медиазаписей ETag медиафайла может быть доступен в атрибуте gd:etag ссылки edit-media.

Если вы хотите обновить запись независимо от того, была ли она изменена кем-то другим после того, как вы ее получили, используйте If-Match: * и не включайте ETag. Дополнительную информацию о тегах ETag можно найти в справочном руководстве по Google Data API.

Обновление метаданных или HTML-контента объекта

Чтобы обновить метаданные или HTML-контент записи, отправьте запрос HTTP PUT на ссылку edit записи.

Ниже приведен пример обновления записи listpage (представленной идентификатором ENTRY_ID) со следующими изменениями:

  • Название изменено на "Обновленный контент".
  • Обновленный HTML-контент
  • Заголовок первого столбца списка изменен на "Владелец".
  • Путь URL страницы изменен элементом <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>

Примечание. Запись, возвращаемая сервером, будет содержать больше элементов, чем в примере выше.

Замена содержимого прикрепленного файла

Ниже приведен пример замены содержимого прикрепленного файла без изменения его метаданных. Поскольку запрос содержит новый контент, используется ссылка edit-media записи прикрепленного файла.

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 ...

Обновление метаданных и контента прикрепленных файлов

Ниже приведен пример одновременного обновления метаданных и контента прикрепленного файла. Название прикрепленного файла изменится на "Новое название", а его содержимое будет заменено содержимым ZIP-файла. Поскольку запрос содержит новый контент файла, используется ссылка edit-media записи прикрепленного файла.

Обратите внимание, что включение ETag для метаданных также неявно обеспечивает If-Match для медиаконтента, поскольку любое обновление медиаконтента приводит к изменению ETag метаданных.

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

К началу



Удаление контента

Чтобы удалить объект с сайта Google, сначала получите запись, а затем отправьте запрос DELETE на URL edit записи. Этот же URL используется при обновлении метаданных или 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>

Если запись удалена успешно, сервер возвращает ответ HTTP 200 OK.

Если вы хотите убедиться, что не удаляете запись, которая была изменена другим клиентом с момента ее получения, включите заголовок HTTP If-Match, содержащий значение ETag исходной записи. Значение ETag исходной записи можно определить, проверив атрибут gd:etag элемента <entry>.

Если вы хотите удалить запись независимо от того, обновлял ли ее кто-то другой после того, как вы ее получили, используйте If-Match: * и не включайте ETag. (В этом случае вам не нужно извлекать запись перед ее удалением.)

Дополнительную информацию о тегах ETag можно найти в справочном руководстве по Google Data API.

К началу



Скачивание прикрепленных файлов

Получив запись о прикрепленном файле, вы можете скачать его, отправив аутентифицированный HTTP-запрос GET по ссылке <content> src. Пример ссылки на контент в PDF-файле:

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

К началу

Фид ACL

Обзор разрешений на предоставление доступа (ACL)

Каждая запись в фиде ACL представляет роль доступа определенного объекта: пользователя, группы пользователей, домена или доступа по умолчанию (общедоступный сайт). В списке будут показаны только пользователи с явным доступом – по одной записи для каждого адреса электронной почты на панели "Пользователи, имеющие доступ" в окне настроек доступа в интерфейсе Google Сайтов. Поэтому администраторы домена не будут показаны, даже если у них есть неявный доступ к сайту.

Роли

Элемент role представляет уровень доступа, который может иметь объект. Элемент gAcl:role может принимать четыре значения:

  • reader – пользователь с правами на просмотр (эквивалентно доступу только для чтения).
  • writer – соавтор (эквивалентно доступу для чтения и записи).
  • owner – обычно администратор сайта (эквивалентно доступу для чтения и записи).

Области действия

Элемент scope представляет объект, у которого есть этот уровень доступа. Существует пять возможных типов элемента gAcl:scope:

  • user – адрес электронной почты, например user@gmail.com.
  • group – адрес электронной почты группы Google, например group@domain.com.
  • domain – доменное имя G Suite, например domain.com.
  • invite – пользователь, который был приглашен на сайт, но ещё не добавлен в список управления доступом для сайта. (Недоступно, если указана версия gdata 1.3 или ниже.)
  • default – существует только одна возможная область действия типа default, у которой нет значения (например, <gAcl:scope type="default">). Эта область действия управляет доступом, который по умолчанию есть у любого пользователя на общедоступном сайте.

Примечание. Доменам нельзя назначить роль "Владелец" (значение gAcl:role). Они могут быть только читателями или редакторами.

Об области действия "invite".

API возвращает область действия приглашения, когда вы добавляете в ACL одного или нескольких пользователей, у которых нет аккаунта Google. API возвращает URL со встроенным токеном, который вы должны предоставить приглашенным пользователям, чтобы они могли принять приглашение.

Этот способ позволяет приглашать пользователей, у которых нет аккаунта Google, даже если вы не знаете, какой адрес электронной почты они хотят использовать. Пользователи, которые перейдут по URL приглашения со встроенным токеном, смогут зарегистрироваться, используя любой адрес электронной почты. Кроме того, по этому URL приглашение могут принять несколько пользователей, поэтому он может быть полезен, если вы приглашаете одного пользователя или группу пользователей.

Примечание. Область действия invite доступна только в gdata версии 1.4 и выше. Это не сработает, если вы явно указываете версию 1.3 или более раннюю.

Получение фида ACL

Фид ACL можно использовать для управления разрешениями на доступ к сайту. Он доступен по следующему URI:

https://sites.google.com/feeds/acl/site/domainName/siteName
Параметр фидаОписание
domainNamesite или домен, размещенный в G Suite (например, example.com).
siteNameНазвание веб-пространства сайта, которое можно найти в URL сайта (например, myCoolSite).

Обратите внимание, что каждая запись в фиде сайта содержит ссылку на этот фид:

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

Чтобы получить разрешения на доступ к сайту, отправьте HTTP-запрос GET на URI фида ACL:

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

Сервер вернет ответ 200 OK и фид записей 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>

К началу

Как предоставить доступ к сайту

Фид ACL принимает запросы GET, POST и PUT. Чтобы добавить новую роль в фид ACL, отправьте запрос POST в фид ACL сайта.

Примечание. Некоторые списки управления доступом могут быть доступны, только если в домене разрешены соответствующие разрешения (например, если для доменов G Suite включен общий доступ за пределами домена).

В этом примере на сайт добавляется новый соавтор (автор):

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>

В случае успешной вставки возвращается 201 Created и новая запись:

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

Приглашение пользователей с помощью области действия invite

Если вы добавляете пользователей, у которых нет аккаунтов Google, API возвращает URL, который нужно предоставить приглашаемым пользователям. Нажав на URL, они смогут получить доступ к сайту, войдя в существующий аккаунт или создав новый.

В случае успешного приглашения возвращается код 201 Created и новая запись, которая включает URL, который необходимо передать пользователю:

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

Доступ на уровне группы и домена

Как и в случае с отдельным пользователем, вы можете предоставить доступ к сайту группе Google или домену G Suite. Ниже перечислены необходимые значения scope.

Предоставление доступа по адресу электронной почты группы:

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

Предоставление доступа всему домену:

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

Предоставление доступа на уровне домена поддерживается только для доменов G Suite и только для домена, в котором размещен сайт. Например, сайт http://sites.google.com/a/domain1.com/siteA можно предоставить только пользователям домена domain1.com, но не domain2.com. Сайты, размещенные не в домене G Suite (например, http://sites.google.com/site/siteB), нельзя предоставить пользователям домена.

Изменение настроек доступа

Чтобы обновить запись ACL, измените ее нужным образом и отправьте HTTP-запрос PUT по ссылке edit, которая представляет собой элемент <link> с атрибутом rel, имеющим значение edit. Для предыдущего примера ссылка будет выглядеть так:

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

Приведенный ниже фрагмент кода изменяет роль пользователя new_writer@gmail.com на "Читатель".

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>

Удаление разрешений на доступ

Чтобы удалить разрешения для этого пользователя, отправьте запрос DELETE по той же ссылке edit, которая использовалась для запроса 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>

Сервер вернет ответ 200 OK.

К началу

Особые темы

Повторное получение фида или записи

Если вы хотите получить фид или запись, которые уже получали ранее, вы можете повысить эффективность, указав серверу отправлять список или запись, только если они изменились с момента последнего получения.

Чтобы выполнить условное извлечение, отправьте HTTP-запрос GET, содержащий HTTP-заголовок If-None-Match. В заголовке укажите ETag списка или записи, который можно найти в атрибуте gd:etag элемента <feed> или <entry>.

Пример использования фида сайта:

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

Когда сервер получает такой запрос, он проверяет, совпадает ли ETag запрашиваемого объекта с указанным вами. Если теги ETag совпадают, значит объект не изменился и сервер возвращает код статуса HTTP 304 Not Modified или HTTP 412 Precodition Failed. Оба этих кода статуса указывают на то, что полученный вами объект является актуальным.

Если теги ETag не совпадают, значит объект был изменен с момента последнего запроса и сервер возвращает его.

Дополнительную информацию о тегах ETag можно найти в справочном руководстве по Google Data API.

Пакетная обработка

Пакетные запросы позволяют клиенту выполнять несколько операций в одном запросе, а не отправлять каждую операцию по отдельности.

Сервер выполнит как можно больше запрошенных изменений и вернет информацию о статусе, которую можно использовать для оценки успешности каждой операции. Подробную информацию о пакетной обработке в Google Data API можно найти в этой статье.

Каждая операция в фиде пакетной загрузки, кроме операций вставки, содержит элемент <id>. Этот элемент совпадает с URL запроса, который вы обычно используете при обновлении, удалении или запросе фида контента. Например, если вы обновляете запись, задайте для элемента <id> ссылку edit для этой записи. Используется для идентификации целевой записи. В новых записях нет элементов <id>, поскольку они ещё не созданы. Вместо этого вы можете определить строковое значение в <batch:id>, которое будет возвращено в ответе сервера и использовано для поиска соответствующей записи.

Чтобы выполнить пакетный запрос, создайте пакетный фид и отправьте HTTP-запрос POST по пакетной ссылке фида:

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

В примере ниже показано, как запрашивать, вставлять, обновлять и удалять записи веб-страниц.

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>

Возвращенный фид будет содержать по одной записи для каждой операции:

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

К началу