La API clásica de Google Sites permite que tus apps accedan, publiquen y modifiquen contenido dentro de un sitio de Google. Además, tu aplicación puede solicitar una lista de actividad reciente, recuperar el historial de revisión y subir o descargar archivos adjuntos.
Público
En este documento, se asume que comprendes las ideas generales detrás del protocolo de las API de datos de Google.
Este documento está dirigido a programadores que deseen crear aplicaciones cliente que puedan interactuar con Google Sites. Proporciona una serie de ejemplos de interacciones básicas de la API de datos con XML/HTTP sin procesar, con explicaciones. Después de leer este documento, puedes obtener más información sobre cómo interactuar con la API mediante nuestras bibliotecas cliente. Para ello, consulta los ejemplos específicos de cada lenguaje que se encuentran en las otras guías de la barra de navegación del lado izquierdo.
Para obtener una referencia del material de esta guía, consulte la guía de referencia.
Autorizar solicitudes
Cuando tu aplicación solicita datos de usuario que no son públicos, debe incluir un token de autorización. El token también identifica tu aplicación ante Google.
Acerca de los protocolos de autorización
Tu aplicación debe usar OAuth 2.0 para autorizar solicitudes. No se admiten otros protocolos de autorización. Si tu aplicación usa Acceder con Google, tú controlarás algunos aspectos de la autorización.
Solicitudes de autorización con OAuth 2.0
Las solicitudes a la API de datos de Google Sites para datos del usuario no públicos deben estar autorizadas por un usuario autenticado.
Los detalles del proceso de autorización, o "flujo", para OAuth 2.0 varían de alguna manera según el tipo de aplicación que estás escribiendo. El siguiente proceso general se aplica a todos los tipos de aplicación:
- Cuando crees tu aplicación, deberás registrarla con Google API Console. Luego, Google proporcionará la información que necesites más tarde, como el ID y un secreto del cliente.
- Active la API de datos de sitios de Google en la Consola de API de Google. Si no aparece en la consola de API, omite este paso.
- Cuando la aplicación necesite acceder a datos del usuario, solicita a Google un alcance de acceso en particular.
- Google mostrará una pantalla de consentimiento al usuario, en la que le pedirá que permita a la aplicación solicitar algunos de sus datos.
- Si el usuario la aprueba, Google le otorgará a la aplicación un token de acceso de corta duración.
- La aplicación solicitará los datos del usuario y adjuntará el token de acceso a la solicitud.
- Si Google determina que la solicitud y el token son válidos, mostrará los datos solicitados.
Algunos flujos requieren pasos adicionales, como el uso de tokens de actualización, para adquirir nuevos tokens de acceso. Si deseas obtener información detallada sobre los flujos para varios tipos de aplicaciones, consulta la documentación de OAuth 2.0 de Google.
Esta es la información del alcance de OAuth 2.0 para la API de datos de Google Sites:
https://sites.google.com/feeds/
Para solicitar acceso con OAuth 2.0, tu aplicación necesita los datos del alcance, además de la información que Google proporciona cuando registras la aplicación (como el ID y el secreto del cliente).
Especifica una versión
Cada solicitud que realices a la API de datos de Google Sites debe especificar una versión 1.4. Para especificar un número de versión, usa el encabezado HTTP GData-Version
:
GData-Version: 1.4
Como alternativa, si no puedes establecer encabezados HTTP, puedes especificar v=1.4
como un parámetro de búsqueda en la URL. Sin embargo, se prefiere el encabezado HTTP cuando sea posible.
Nota: Las bibliotecas cliente proporcionan automáticamente los encabezados de versión adecuados, así que no uses el parámetro de consulta v=1.4
cuando uses una biblioteca cliente.
Feed del sitio
El feed del sitio se puede usar para crear una lista de los sitios de Google de los que el usuario es propietario o que tiene permisos de visualización, y también para modificar el título de un sitio existente. En el caso de los dominios de G Suite, también se puede usar para crear o copiar un sitio completo.
Enumera sitios
Para enumerar los sitios a los que tiene acceso un usuario, envía una solicitud GET
autenticada a la siguiente URL:
https://sites.google.com/feeds/site/domainName
Parámetro del feed | Descripción |
---|---|
domainName | "site " o el dominio alojado en G Suite (p.ej., example.com ). |
La respuesta contendrá un feed con una lista de sitios:
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/"CkUAQH4_eil7I2A9WxNaFk4.""> <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/"DkQGQHczfA9WxNaFk4.""> <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>
Los sitios se muestran en orden alfabético.
Creación de sitios nuevos
Nota: Esta función solo está disponible para los dominios de G Suite.
Para aprovisionar sitios nuevos, se debe crear un POST
HTTP al feed del sitio, por ejemplo:
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>
La solicitud anterior creará un nuevo sitio de Google con el tema "Lista" bajo el dominio de G Suite example.com
.
La URL del sitio sería http://sites.google.com/a/example.com/source-site/.
Si el sitio se creó correctamente, el servidor responderá con 201 Created
.
La entrada de la respuesta contendrá elementos agregados por el servidor, como un vínculo al sitio, un vínculo al feed de LCA del sitio, el nombre del sitio, un título y un resumen.
<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/"DEECR38l7I2A9WxNaF0Q.""> <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>
Cómo copiar un sitio
Nota: Esta función solo está disponible para los dominios de G Suite.
Un sitio existente se puede duplicar de la misma manera que se crea un sitio nuevo. Sin embargo, en la entrada Atom de la solicitud POST
, incluye un <link>
con rel='source'
que apunte al feed del sitio del sitio que deseas copiar. Cualquier sitio que se haya copiado tendrá este vínculo. El siguiente es un ejemplo de cómo duplicar un sitio:
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>
La solicitud anterior copiaría el sitio en http://sites.google.com/a/example.com/source-site/.
Puntos importantes:
- Solo pueden copiarse los sitios y las plantillas de sitios que pertenecen al usuario autenticado.
- También se puede copiar una plantilla para sitios. Un sitio es una plantilla si la opción "Publicar este sitio como plantilla" está marcada en la página de configuración de Google Sites.
- Puedes copiar un sitio de otro dominio, siempre que figuras como propietario en el sitio de origen.
Cómo actualizar los metadatos de un sitio
Para actualizar el título o el resumen de un sitio, envía un PUT
HTTP al vínculo edit
de una entrada del sitio.
Por ejemplo, el siguiente ejemplo actualizará el título del sitio anterior a New Test Site2
y su descripción a 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/"DEECR38l7I2A9WxNaF0Q.""> <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>
Cómo agregar categorías
Nota: Esta función solo está disponible para los dominios de G Suite.
G Suite para sus sitios de dominio incluye metadatos de categorías que son útiles para categorizar sitios dentro de su dominio. Para agregar o actualizar los metadatos de las categorías, envía un PUT
HTTP al vínculo edit
de la entrada de tu sitio, que incluye una etiqueta category
. Consulta la línea en negrita en el siguiente ejemplo:
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/"DEECR38l7I2A9WxNaF0Q.""> <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>
En este ejemplo, se edita un sitio existente y se agrega la categoría "Sitio del equipo".
También puedes agregar varias categorías si agregas varias categorías <category>
. Consulta las líneas en negrita en el siguiente ejemplo:
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/"DEECR38l7I2A9WxNaF0Q.""> <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>
En este ejemplo, se agregan dos categorías: "Site Site" (Sitio del equipo) y "Legal Department" (Departamento legal)
Asignaciones de direcciones web
Las asignaciones de direcciones web permiten a los usuarios de Sites asignar sus propios dominios a un sitio de Google. Por ejemplo, se puede usar http://www.mydomainsite.com
en lugar de http://sites.google.com/a/domain.com/mysite
. Según dónde se aloje el sitio, puedes modificar de forma manual las asignaciones de direcciones web de los sitios. Para obtener más información, consulta el artículo de nuestro Centro de ayuda.
Cómo recuperar las asignaciones de direcciones web de un sitio
Para mostrar las asignaciones de direcciones web de un sitio, recupera la entrada o el feed del sitio con el parámetro 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/"DkQGQHczfA9WxNaFk4.""> <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>
Las asignaciones existentes se mostrarán como link
con rel='webAddressMapping. Por ejemplo, en el ejemplo anterior, hay tres webAddressMapping
que apuntan al sitio http://sites.google.com/site/myOtherTestSite
.
Modifica asignaciones de direcciones web
Nota: Todas las operaciones GET/POST/PUT deben especificar el parámetro with-mappings=true
cuando se trabaja con asignaciones de direcciones web. Si no se encuentra el parámetro, los webAddressMapping
no se mostrarán en las entradas del sitio (GET) ni se considerarán cuando se actualicen o quiten las asignaciones (PUT) de una entrada.
Para agregar, actualizar o borrar un mapeo, simplemente especifica, cambia o quita ese vínculo cuando creas sitios nuevos o actualizas los metadatos de un sitio. El parámetro with-mappings=true
debe incluirse en el URI del feed del sitio.
Nota: Para actualizar las asignaciones de direcciones, debe ser administrador o administrador de dominio en el caso de un sitio alojado en G Suite.
Por ejemplo, la siguiente solicitud actualiza la asignación de http://www.mysitemapping.com
a http://www.my-new-sitemapping.com
y quita http://www.mysitemapping2.com
, ya que deja el vínculo fuera de la entrada:
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/"DkQGQHczfA9WxNaFk4.""> <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>
Tenga en cuenta que las asignaciones de direcciones web también se pueden especificar al momento de crear o copiar un sitio.
Feed de actividad
Para recuperar la actividad reciente (cambios) de un sitio, puedes recuperar el feed de actividad. Cada entrada del feed de actividad contiene información sobre un cambio realizado en el sitio.
Para consultar el feed de actividad, envía un GET
HTTP a la URL del feed de actividad:
https://sites.google.com/feeds/activity/domainName/siteName
Parámetro del feed | Descripción |
---|---|
domainName | "site " o el dominio alojado en G Suite (p.ej., example.com ). |
siteName | El nombre del espacio web de su sitio, que se encuentra en la URL del sitio (p.ej., myCoolSite ). |
Ejemplo de solicitud y respuesta:
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/"CU4GQ3szfSl7ImA9WxNRFUg.""> <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/"CU8DQn45fyl7ImA9WxNRFUg.""> <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/"CU8AR3s4cSl7ImA9WxNRFUg.""> <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>
Nota: Para acceder a este feed, debes ser colaborador o propietario del sitio.
Tu cliente debe enviar el encabezado Authorization
correcto y hacer referencia al token obtenido en Autorizar solicitudes.
Feed de revisión
Para recuperar el historial de revisiones de cualquier entrada de contenido, envía un GET
HTTP al vínculo de revisión de la entrada:
https://sites.google.com/feeds/revision/domainName/siteName/CONTENT_ENTRY_ID
Parámetro del feed | Descripción |
---|---|
domainName | "site " o el dominio alojado en G Suite (p.ej., example.com ). |
siteName | El nombre del espacio web de su sitio, que se encuentra en la URL del sitio (p.ej., myCoolSite ). |
A fin de encontrar el vínculo de revisiones para una página, un comentario, un archivo adjunto o una lista de elementos determinados, primero recupera la entrada del feed de contenido con el atributo CONTENT_ENTRY_ID. La entrada recuperada contendrá un <atom:link>
para el feed de revisión.
Por ejemplo:
<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"/>
Ejemplo de solicitud y respuesta:
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/"CU4GQmA9WxNRFUg.""> <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&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/"CU8DQ388eSl7ImA9WxNRFUg.""> <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&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>
Nota: Para acceder a este feed, debes ser colaborador o propietario del sitio.
Tu cliente debe enviar el encabezado Authorization
correcto y hacer referencia al token obtenido en Autorizar solicitudes.
Feed de contenido
Recuperando contenido
El canal de contenido incluye el contenido actual de un Sitio de Google. Envía una solicitud GET
autenticada a la siguiente URL:
https://sites.google.com/feeds/content/domainName/siteName
Parámetro del feed | Descripción |
---|---|
domainName | "site " o el dominio alojado en G Suite (p.ej., example.com ). |
siteName | El nombre del espacio web de su sitio, que se encuentra en la URL del sitio (p.ej., myCoolSite ). |
El resultado es un feed que enumera la primera página de las entradas de contenido del sitio. Cada entrada del feed representará un tipo diferente de entrada de contenido, como webpage
, filecabinet
, attachment
, comment
, etc. El elemento <category scheme="http://schemas.google.com/g/2005#kind">
determina el tipo de entrada. Consulta la guía de referencia para obtener una lista de los valores kind
de compatibilidad.
Nota: Este feed puede requerir autenticación o no, según los permisos de uso compartido del sitio.
Si el sitio no es público, tu cliente debe enviar el encabezado Authorization
correcto (como se muestra en el ejemplo anterior) y hacer referencia al token obtenido en Autorizar solicitudes.
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/"Ck8GQXk7fil7ImA9WxNSFk0.""> <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/"CkMBQH08fCl7ImA9WxNSFk0.""> <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/"AkYHQ3ozcCl7ImA9WxJaE08.""> <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>
Nota: Estos son solo los primeros resultados. Para desplazarte por todo el feed de contenido, sigue el vínculo "siguiente" del feed:
<link rel="next" type="application/atom+xml" href="https://sites.google.com/feeds/content/domainName/siteName/?start-index=2"/>
Para ver una explicación de los elementos comunes de Atom, consulta la referencia del protocolo de datos de Google.
A continuación, se describen los elementos que contienen una medición específica de la API de la versión clásica de Sites. Ciertas entradas de tipo tendrán propiedades adicionales (no enumeradas a continuación), mientras que otras no. Por ejemplo, una entrada listitem
puede tener elementos <gs:field>
, mientras que una entrada webpage
no.
Elemento | Descripción |
---|---|
<content ...> | El texto interno es el cuerpo HTML de la página. Para algunas entradas (p.ej., archivos adjuntos), este elemento contendrá un atributo src que apunta al archivo. |
<link rel="alternate" ...> | Vínculo a la página o el elemento en Google Sites. |
<link rel="http://schemas.google.com/sites/2008#revision" ...> | El atributo href apunta al feed de revisión de la entrada. |
<link rel="http://schemas.google.com/sites/2008#parent" ...> | href apunta a la entrada principal de la entrada. |
<link rel="http://schemas.google.com/sites/2008#template" ...> | href apunta a la página de la plantilla de entrada. |
<category scheme="http://schemas.google.com/g/2005#kind" ...> | label es el tipo de entrada. |
<category term="http://schemas.google.com/g/2005#template" ...> | label=template que significa que la entrada es una plantilla. |
<gd:feedLink> | href apunta a los elementos secundarios del elemento superior de la entrada. |
<sites:pageName> | Nombre del espacio web de la página, que corresponde al nombre en la URL de la página. |
<sites:revision> | Número de revisión actual. |
Ejemplos de consultas de canal de contenido
Puedes buscar contenido en el feed de datos con algunos de los parámetros de búsqueda estándar de la API de datos de Google y los específicos de la versión clásica de la API de Sites. Para obtener información más detallada y una lista completa de los parámetros admitidos, consulta la guía de referencia.
Recupera tipos de entradas específicos
Para recuperar solo un tipo de entrada en particular, usa el parámetro kind
. En este ejemplo, se muestran solo webpage
entradas:
GET /feeds/content/domainName/siteName?kind=webpage
Para mostrar más de un tipo de entrada, separa cada kind
con un ",". En este ejemplo, se muestran las entradas filecabinet
y listpage
:
GET /feeds/content/domainName/siteName?kind=filecabinet,listpage
Como alternativa, puedes usar el formato estándar para una consulta /-/category
de datos de Google en lugar del parámetro kind
:
GET /feeds/content/domainName/siteName/-/filecabinet|listpage
Recupera plantillas de páginas
En este ejemplo, se muestran solo template
páginas:
GET /feeds/content/domainName/siteName/-/template
Para mostrar todos los tipos de entrada y, además, incluir páginas de template
, usa lo siguiente:
GET /feeds/content/domainName/siteName/-/template|-template
Cómo recuperar una página por ruta
Si conoces la ruta de acceso relativa de una página dentro de Google Sites, puedes usar el parámetro path
para recuperar esa página específica.
En este ejemplo, se mostraría la página ubicada en http://sites.google.com/site/siteName/path/to/the/page
:
GET /feeds/content/domainName/siteName?path=/path/to/the/page
Recuperar todas las entradas de una página superior
Si conoces el ID de entrada de una página, puedes usar el parámetro parent
para recuperar todas sus entradas secundarias (si las hay):
GET /feeds/content/domainName/siteName?parent=CONTENT_ENTRY_ID
Incluidos borradores o entradas borradas
Para incluir entradas eliminadas o en borrador, usa los parámetros include-drafts
o include-deleted
, respectivamente.
Este ejemplo incluye entradas de borrador en el canal de contenido:
GET /feeds/content/domainName/siteName?include-drafts=true
Búsqueda en el texto completo
Para buscar en todo el contenido de un sitio, usa el parámetro q
a fin de emitir una búsqueda en el texto completo:
GET /feeds/content/domainName/siteName?q=Text%20I%20am%20looking%20for
Creación de contenido
Para crear contenido nuevo (páginas web, páginas de lista, gabinete de archivos, páginas de anuncios, etc.), envía un POST
HTTP al feed de contenido:
https://sites.google.com/feeds/content/domainName/siteName
Para obtener una lista de los tipos de entrada admitidos, consulta el parámetro kind
en la Guía de referencia.
Crear páginas o elementos nuevos
En este ejemplo, se crea un webpage
nuevo en el nivel superior del sitio, se incluye XHTML para el cuerpo de la página y se establece el título del encabezado en "New WebPage Title":
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>
Si se ejecuta correctamente, el servidor responde con un 201 Created
y una copia de la entrada.
Crear elementos o páginas en rutas de URL personalizadas
De forma predeterminada, el ejemplo anterior se crea en la URL http://sites.google.com/domainName/siteName/new-webpage-title
y tiene el encabezado de página "Título de página web nueva". Es decir, <atom:title>
se normaliza en new-webpage-title
para la URL.
Para personalizar la ruta de URL de una página, puedes establecer el elemento <sites:pageName>
.
En este ejemplo, se crea un filecabinet
nuevo con el encabezado de página “Almacenamiento de archivos”, pero se crea la página en la URL http://sites.google.com/domainName/siteName/files
mediante la especificación del elemento <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>
El servidor usa las siguientes reglas de precedencia para nombrar la ruta de URL de una página:
<sites:pageName>
, si está presente. Debe satisfacera-z, A-Z, 0-9, -, _
.<atom:title>
, no debe ser nulo si pageName no está presente. La normalización es cortar y contraer los espacios en blanco a “-” y quitar los caracteres que no coincidan cona-z, A-Z, 0-9, -, _
.
A modo de ejemplo, el servidor aceptaría "Custom_Page2".
Cómo crear subpáginas
Para crear subpáginas (secundarias) en una página principal, debes incluir un <link rel="http://schemas.google.com/sites/2008#parent">
en tu nueva entrada de Atom. Configura el atributo href
del vínculo como el vínculo propio de la entrada superior.
En este ejemplo, se crea un announcement
nuevo con el encabezado "announcement", en una página de anuncios superior con el ID de entrada PARENT_ENTRY_ID
. También se incluye contenido XHTML para el cuerpo de la página:
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>
Plantillas de página
Crear plantillas de página
El proceso para crear una plantilla de página es el mismo que el de crear páginas o elementos nuevos y la creación de subpáginas.La diferencia es la adición de category
con el término y la etiqueta establecidos como "http://schemas.google.com/g/2005#template" y "template", respectivamente.
En este ejemplo, se crea una plantilla webpage
nueva.
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>
Crear páginas a partir de una plantilla
Al igual que cuando creas plantillas de página, puedes crear una instancia de página nueva desde una plantilla si incluyes un elemento <link>
con rel='http://schemas.google.com/sites/2008#template' que dirija al vínculo propio de una plantilla de página.
En este ejemplo, se crea una página filecabinet
nueva a partir de una plantilla de página existente que define un archivador.
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>
Nota: A pesar de una plantilla que define un <category>
, aún se necesita uno en tu entrada. Además, ten en cuenta que, si incluyes un elemento <content>
, el servidor lo rechazará.
Subiendo archivos
Al igual que en Google Sites, la API le permite cargar archivos adjuntos en páginas de gabinete de archivos y páginas superiores.
Para subir un archivo adjunto a un superior, envía una solicitud POST
HTTP a la URL del feed de contenido:
https://sites.google.com/feeds/content/domainName/siteName
El cuerpo de POST
debe ser una solicitud de varias partes de MIME para combinar el contenido del archivo con un <atom:entry>
que contenga los metadatos del adjunto. El <atom:entry>
debe hacer referencia al vínculo propio de la entrada superior para especificar dónde se creará el adjunto.
Consulta Cómo crear subpáginas para obtener más información.
Subiendo archivos adjuntos
A continuación, te mostramos un ejemplo de cómo subir un archivo PDF a un gabinete de archivos con el ID PARENT_ENTRY_ID
. El adjunto se creará con el título “Archivo PDF” y una descripción (opcional), “Paquete 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--
Si la carga se realiza correctamente, el servidor responderá con un 201 Created
y una copia de la entrada del archivo adjunto recién creado.
Subir un archivo adjunto a una carpeta
Para subir un archivo adjunto a una carpeta de una filecabinet
, incluye una categoría con el atributo "term" establecido en el nombre de la carpeta:
<category scheme="http://schemas.google.com/sites/2008#folder" term="FolderName">
Archivos adjuntos en la Web
Los archivos adjuntos web son tipos especiales de archivos adjuntos. En esencia, son vínculos a otros archivos en la Web que puedes agregar a tus listas de gabinetes de archivos. Esta función es similar al método de subida "Agregar archivo por URL" en la interfaz de usuario de Google Sites.
Nota: Los archivos adjuntos web solo se pueden crear en un gabinete de archivos. No se pueden subir a otros tipos de páginas.
En este ejemplo, se crea un webattachment
en el archivador al que hace referencia el ID FILECABINET_ENTRY_ID
.
Su título y su descripción (opcional) están configuradas en "GoogleLogo" y "colores atractivos", respectivamente.
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>
La POST
crea un vínculo en el archivador del usuario que apunta a la imagen en 'http://www.google.com/images/logo.gif'.
Actualizando contenido
Los metadatos (título, pageName, etc.) y el contenido de cualquier página se pueden editar con una sola solicitud PUT
al vínculo edit
.
El cuerpo de la solicitud debe contener una entrada Atom que describa la página actualizada. La excepción a esta regla es la entrada de un archivo adjunto, en la que la entrada solo se puede usar para actualizar los metadatos del archivo adjunto.
Para cambiar el contenido del archivo adjunto, simplemente incluye los datos sin procesar como el cuerpo de una solicitud PUT
al vínculo edit-media
del adjunto. También puedes actualizar los metadatos y el contenido del archivo adjunto a la vez mediante una solicitud multiparte de MIME.
Para afirmar que tu actualización no reemplaza los cambios de otro cliente, incluye el valor ETag de la entrada original. Para ello, proporciona el valor de ETag en un encabezado HTTP If-Match
o incluye el atributo gd:etag
de la entrada original en la entrada actualizada. Para determinar el valor ETag de la entrada original, examina el atributo gd:etag
del elemento <entry>
.
Para las entradas de medios, la ETag de los medios puede estar disponible en el atributo gd:etag
del vínculo edit-media
.
Si deseas actualizar la entrada sin importar si alguien más la actualizó desde que la recuperaste, usa If-Match: *
y no incluyas la ETag. Para obtener más información sobre las ETags, consulta la Guía de referencia de API de datos de Google.
Actualización de los metadatos o del contenido HTML de un elemento
Para actualizar los metadatos o el contenido HTML de una entrada, envía un PUT
HTTP al vínculo edit
de la entrada.
A continuación, se muestra un ejemplo de cómo actualizar una entrada listpage
(representada por su ID ENTRY_ID
) con los siguientes cambios:
- El título se modificó a "Contenido actualizado".
- Contenido HTML actualizado
- El encabezado de la primera columna de la lista se actualizará a "Propietario".
- El elemento
<sites:pageName>
modifica la ruta de URL de la página
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/"CEEBRn0ymA9WxJWEUw.""> <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>
Nota: La entrada (que muestra el servidor) contendrá más elementos que el ejemplo anterior.
Cómo reemplazar el contenido de un archivo adjunto
A continuación, se muestra un ejemplo de cómo reemplazar el contenido de un archivo adjunto, pero sin modificar sus metadatos. Dado que la solicitud incluye contenido nuevo, se usa el vínculo edit-media
de la entrada del adjunto.
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 ...
Actualización de los metadatos y el contenido de los archivos adjuntos
A continuación, se muestra un ejemplo de cómo actualizar los metadatos de un archivo adjunto y su contenido al mismo tiempo. El nombre del archivo adjunto se actualizará a "Título nuevo" y su contenido se reemplazará por el contenido de un archivo ZIP. Debido a que la solicitud incluye contenido de archivo nuevo, se usa el vínculo edit-media
de la entrada del adjunto.
Ten en cuenta que incluir la ETag para los metadatos también proporciona una If-Match
implícita para el contenido multimedia, ya que cualquier actualización del contenido multimedia provoca que la ETag de los metadatos cambie.
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
Eliminación del contenido
Para quitar un elemento de un sitio de Google, primero recupera la entrada y, luego, envía una solicitud DELETE
a la URL edit
de la entrada. Esta es la misma URL que se usa para actualizar los metadatos o el contenido HTML de un elemento.
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>
Si la entrada se borró correctamente, el servidor responde con un 200 OK
HTTP.
Si deseas asegurarte de no borrar una entrada que haya cambiado otro cliente desde que la obtuviste, incluye un encabezado HTTP If-Match
que contenga el valor ETag de la entrada original. Para determinar el valor ETag de la entrada original, examina el atributo gd:etag
del elemento <entry>
.
Si deseas borrar la entrada independientemente de que otra persona la haya actualizado desde que la recuperaste, usa If-Match: *
y no incluyas la ETag. (en este caso, no es necesario recuperar la entrada antes de borrarla).
Para obtener más información sobre las ETags, consulta la Guía de referencia de las API de datos de Google.
Descargar archivos adjuntos
Una vez que tengas una entrada de archivo adjunto, puedes descargar el archivo mediante el envío de un GET
HTTP autenticado al vínculo de src <content>
de la entrada. Un ejemplo de un vínculo de contenido de PDF:
<content type="application/pdf" src="http://502377765-a-google-com-s-sites.googlegroups.com/feeds/media/content/domainName/siteName/678942036"/>
Feed de LCA
Descripción general de los permisos de uso compartido (LCA)
Cada entrada de LCA en el feed de LCA representa una función de acceso de una entidad en particular, ya sea un usuario, un grupo de usuarios, un dominio o el acceso predeterminado (que es un sitio público). Las entradas solo se mostrarán para las entidades con acceso explícito. Se mostrará una entrada para cada dirección de correo electrónico en el panel "Personas con acceso" de la pantalla de uso compartido de la IU de Google Sites. Por lo tanto, no se mostrarán los administradores del dominio, aunque tengan acceso implícito a un sitio.
Roles
El elemento de función representa un nivel de acceso que puede tener una entidad. Hay cuatro valores posibles del elemento gAcl:role
:
- reader: un visualizador (equivalente a acceso de solo lectura).
- writer: un colaborador (equivalente a acceso de lectura/escritura)
- owner: suele ser el administrador del sitio (equivalente a acceso de lectura/escritura).
Permisos
El elemento de alcance representa la entidad que tiene este nivel de acceso. Hay cinco tipos posibles de elementos gAcl:scope
:
- usuario: Un valor de dirección de correo electrónico, p. ej., "usuario@gmail.com".
- group: una dirección de correo electrónico del Grupo de Google, p. ej., "group@domain.com".
- dominio: un nombre de dominio de G Suite, p. ej., "dominio.com".
- invite: un usuario que recibió una invitación al sitio, pero que todavía no se agregó a la LCA del sitio. (No está disponible si se especifica gdata 1.3 o una versión anterior).
- default: Solo hay un alcance posible del tipo "default", que no tiene valor (p. ej.,
<gAcl:scope type="default">
). Este alcance en particular controla el acceso que tiene cualquier usuario de forma predeterminada en un sitio público.
Nota: Los dominios no pueden tener un valor gAcl:role
configurado como acceso de “propietario”, solo pueden ser lectores o escritores.
Acerca del alcance de "invitar".
La API muestra el alcance de la invitación cuando agregas uno o más usuarios a la LCA que aún no tienen una Cuenta de Google. La API muestra una URL con un token incorporado que debes proporcionar a los usuarios invitados para permitirles aceptar la invitación.
Este método de invitación le permite invitar a usuarios ajenos a Google sin tener conocimiento previo de la dirección de correo electrónico que desea utilizar. Siempre y cuando los usuarios hagan clic en la URL de invitación con el token incorporado, podrán registrarse para obtener acceso con la dirección de correo electrónico que deseen. Además, varios usuarios pueden utilizar esta URL para aceptar la invitación, por lo que puede resultar útil si se invita a un usuario o a un grupo de usuarios.
Nota: El permiso "invite" solo está disponible en la versión 1.4 de GData y versiones posteriores. Esto no funcionará si especificas explícitamente 1.3 o una versión anterior.
Recupera el feed de LCA
El feed de LCA se puede usar para controlar los permisos de uso compartido de un sitio, y se puede acceder a él mediante el siguiente URI:
https://sites.google.com/feeds/acl/site/domainName/siteName
Parámetro del feed | Descripción |
---|---|
domainName | "site " o el dominio alojado en G Suite (p.ej., example.com ). |
siteName | El nombre del espacio web de su sitio, que se encuentra en la URL del sitio (p.ej., myCoolSite ). |
Es importante tener en cuenta que cada entrada del sitio del feed incluye un vínculo al siguiente feed:
<link rel="http://schemas.google.com/acl/2007#accessControlList" type="application/atom+xml" href="https://sites.google.com/feeds/acl/site/domainName/siteName"/>
Para recuperar los permisos de uso compartido de un sitio, envía y envía HTTP GET
al URI del feed de LCA:
GET /feeds/acl/site/domainName/siteName HTTP/1.1 Host: sites.google.com GData-Version: 1.4 Authorization: <your authorization header here>
El servidor responderá con un 200 OK
y un feed de entradas de LCA:
<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>
Compartir un sitio
El feed de LCA acepta solicitudes GET
, POST
y PUT
. Para insertar una función nueva en el feed de LCA, simplemente emite una solicitud POST
al feed de LCA del sitio.
Nota: Ciertas LCA de uso compartido solo son posibles si el dominio está configurado para otorgar esos permisos (p.ej., si el uso compartido fuera del dominio para los dominios de G Suite está habilitado, etcétera).
En este ejemplo, se agrega un nuevo colaborador (escritor) al sitio:
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>
Un 201 Created
y la entrada nueva se muestran en una inserción correcta:
<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>
Cómo invitar a usuarios mediante el alcance "invitar"
Si agregas usuarios que no tienen Cuentas de Google, la API muestra una URL que debes proporcionar a los usuarios que deseas invitar. Luego de hacer clic en la URL, podrán acceder al sitio accediendo con una cuenta existente o creando una nueva.
Una invitación correcta muestra una 201 Created
y una entrada nueva que incluye la URL que debes pasar al usuario:
<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>
Uso compartido a nivel de grupo y dominio
De manera similar a compartir un sitio con un solo usuario, puedes compartir un sitio a través de un grupo de Google o de un dominio de G Suite. A continuación, se indican los valores necesarios de scope
.
Compartir contenido con una dirección de correo electrónico de grupo:
<gAcl:scope type="group" value="group@example.com"/>
Uso compartido con todo un dominio:
<gAcl:scope type="domain" value="example.com"/>
El uso compartido a nivel del dominio solo se admite en los dominios de G Suite y en el dominio en el que se aloja el sitio. Por ejemplo, http://sites.google.com/a/domain1.com/siteA solo puede compartir el sitio completo con domain1.com, no con domain2.com. Los sitios que no se alojan en un dominio de G Suite (p.ej., http://sites.google.com/site/siteB) no pueden invitar dominios.
Modifica los permisos de uso compartido
Para actualizar una entrada de LCA, modifica la entrada según sea necesario y emite una solicitud PUT
HTTP al vínculo edit
de la entrada, que es simplemente un elemento <link>
, cuyo atributo “rel” está configurado como “edit”. En el ejemplo anterior, ese vínculo es el siguiente:
<link rel='edit' type='application/atom+xml' href='https://sites.google.com/feeds/acl/site/domainName/siteName/user%3Anew_writer%40example.com'/>
El siguiente fragmento cambia el rol de new_writer@gmail.com
a “lector”:
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>
Quitando permisos de uso compartido
Para quitarle los permisos a este usuario, emite una solicitud DELETE
al mismo vínculo edit
que se usó en la solicitud 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>
El servidor responderá con 200 OK
.
Temas especiales
Cómo recuperar un feed o una entrada nuevamente
Si deseas recuperar un feed o una entrada que recuperaste antes, puedes mejorar la eficiencia diciendo al servidor que envíe la lista o la entrada solo si cambió desde la última vez que la recuperaste.
Para hacer este tipo de recuperación condicional, envía una solicitud GET
HTTP que incluya un encabezado HTTP If-None-Match
. En el encabezado, especifica la ETag de la lista o la entrada, que puedes encontrar en el atributo gd:etag
del elemento <feed>
o del elemento <entry>
.
Un ejemplo en el que se usa el feed del sitio:
GET /feeds/site/domainName/myOtherTestSite/ GData-Version: 1.4 If-None-Match: W/"Ck8GQXk7fil7ImA9WxNSFk0."
Cuando el servidor recibe esta solicitud, comprueba si el elemento que solicitaste tiene la misma ETag que la ETag que especificaste. Si las ETags coinciden, el elemento no ha cambiado, y el servidor muestra un código de estado HTTP 304 Not Modified
o un código de estado HTTP 412 Precodition Failed
. Ambos códigos de estado indican que el elemento que ya recuperaste está actualizado.
Si los ETag no coinciden, el elemento se modificó desde la última vez que lo solicitaste y el servidor muestra el elemento.
Para obtener más información sobre las ETags, consulta la Guía de referencia de las API de datos de Google.
Procesamiento por lotes
Las solicitudes por lotes permiten que el cliente ejecute varias operaciones en una sola solicitud, en lugar de enviar cada operación de forma individual.
El servidor realizará tantos cambios solicitados como sea posible y mostrará información de estado que puedes usar para evaluar el éxito o el fracaso de cada operación. Para obtener más detalles sobre el procesamiento por lotes en la API de datos de Google, consulta Procesamiento por lotes con las API de datos de Google
Cada operación en un feed por lotes tiene un elemento <id>, excepto las operaciones de inserción.
Este elemento es el mismo que el de la URL de solicitud que usarías normalmente al actualizar, eliminar o consultar el canal de contenido.
Por ejemplo, si estás actualizando un cambio, establece <id> en el vínculo edit
para la entrada en cuestión.
Se usa para identificar la entrada objetivo. Las entradas nuevas no tienen elementos <id>, ya que aún no se crearon. En su lugar, puedes definir un valor de string en <batch:id>, que se mostrará en la respuesta del servidor y se usará para buscar la entrada correspondiente.
Para realizar una solicitud por lotes, crea un feed por lotes y envía un POST
HTTP al vínculo por lotes del feed:
<link rel="http://schemas.google.com/g/2005#batch" type="application/atom+xml" href="https://sites.google.com/feeds/content/site/siteName/batch"/>
En el siguiente ejemplo, se muestra cómo consultar, insertar, actualizar y borrar una entrada de página web:
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=""YDgpeyI.""> <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=""YassseyI.""> <id>https://sites.google.com/feeds/content/site/siteName/ENTRY_ID3</id> <batch:operation type='delete'/> </entry> </feed>
El feed que se muestre contendrá una entrada de resultado para cada operación:
<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=""YDgpsdfeyI."">
<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=""YDsseyI."">
<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=""YDkpeyI."">
<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>