¿Cómo se crea un documento en Google Docs mediante progtwigción?

La documentación de la API de la Lista de documentos de Google parece indicar que puede crear un documento local y cargarlo. ¿No hay forma de crear y editar un documento en Google Docs a través de una API?

Mientras que los documentos lo llaman “cargar”, todo se reduce a enviar una solicitud HTTP POST apropiadamente formateada, por lo que puede ser una nueva creación en lugar de una “carga” real de un archivo existente. (La creación a través de solicitudes POST es similar a lo que normalmente se describe como una REST API , aunque en REST real normalmente se usa una solicitud PUT lugar del curso).

Solo necesita crear una burbuja de datos que represente su documento en cualquiera de los formatos enumerados aquí . Dependiendo de su lenguaje de progtwigción, lo más simple puede ser text/csv para una hoja de cálculo y application/rtf para un documento de texto. Luego, colóquelo. en una información POST apropiadamente formateada. Por ejemplo, para crear una hoja de cálculo de la manera más simple (sin metadatos), puede POST algo así como:

 POST /feeds/default/private/full HTTP/1.1 Host: docs.google.com GData-Version: 3.0 Authorization:  Content-Length: 81047 Content-Type: text/csv Slug: Example Spreadsheet ColumnA, ColumnB 23, 45 

Cada lenguaje de progtwigción específico para el que se proporciona una API dedicada puede ofrecer ayuda con esta tarea no tan difícil; por ejemplo, en Python, según los documentos , la API recomienda usar ETags para evitar sobrescribir los cambios cuando varios clientes se “cargan” simultáneamente (es decir, creando o actualizando documentos). Pero siempre es posible preparar el POST directamente, ya que la API casi REST está documentada como el protocolo subyacente a todas las API específicas del idioma.

La respuesta de Alex, aunque indudablemente correcta, plantea la pregunta: “¿cómo hago eso a través de la API de Google Docs?”

Aquí hay una manera (en Python, porque soy ese tipo de persona):

 import gdata.docs.service import StringIO client = gdata.docs.service.DocsService() client.ClientLogin(username, password, source='Spreadsheet Creation Example') content = 'COL_A, COL_B, COL_C, COL_D\ndata1, data2, data3, data4' ms = gdata.MediaSource(file_handle=StringIO.StringIO(content), content_type='text/csv', content_length=len(content)) entry = client.Upload(ms, 'Test Spreadsheet') 

Esta es una pequeña combinación de técnicas que encontré en http://code.google.com/p/gdata-python-client/source/browse/tests/gdata_tests/docs/service_test.py , que a su vez encontré a través de este Publicación del Grupo de Google para la API de GData Docs.

Las ideas clave (para mí de todos modos) fueron:

  1. dándose cuenta de que el parámetro formal “file_handle” del constructor de MediaSource tomará cualquier objeto similar a un archivo, y
  2. descubriendo (como menciona el seguimiento del OP a la publicación del Grupo de Google) que las pruebas unitarias son una gran fuente de ejemplos

(No pude encontrar la guía para desarrolladores específica de Python referenciada por el enlace de documentos de Alex, posiblemente se haya perdido o esté enterrada en el movimiento de Google de los activos de documentación de code.google.com a developers.google.com. El enlace de Alex ahora redirige al documento más genérico que muestra principalmente ejemplos de .NET y Java, pero solo un poco de Python).