¿Cómo se crea un documento en Google Docs mediante programación?
La documentación de la API de la lista de documentos de Google parece decir 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?
Si bien los documentos lo llaman "cargar", todo se reduce a enviar una HTTP POST
solicitud con el formato adecuado, por lo que , por supuesto, puede ser una nueva creación en lugar de una "carga" real de un archivo que de otro modo ya existiría. (La creación a través de POST
solicitudes es similar a lo que normalmente se describe como REST API
, aunque en realidad REST
normalmente usarías una PUT
solicitud en lugar de, por supuesto).
Solo necesita crear una masa de datos que represente su documento en cualquiera de los formatos enumerados aquí (dependiendo de su lenguaje de programación, el más simple puede ser text/csv
para una hoja de cálculo y application/rtf
un documento de texto) y luego ingresar los POST
datos con el formato adecuado. Por ejemplo, para crear una hoja de cálculo de la forma más sencilla (sin metadatos), podrías hacer POST
algo como:
POST /feeds/default/private/full HTTP/1.1
Host: docs.google.com
GData-Version: 3.0
Authorization: <your authorization header here>
Content-Length: 81047
Content-Type: text/csv
Slug: Example Spreadsheet
ColumnA, ColumnB
23, 45
Cada lenguaje de programación específico para el cual 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 su uso ETags
para evitar sobrescribir cambios cuando varios clientes están "cargando" 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í al menos) fueron:
- darse cuenta de que el parámetro formal "file_handle" del constructor de MediaSource tomará cualquier objeto similar a un archivo, y
- descubrir (como menciona el seguimiento del OP a la publicación del Grupo Google) que las pruebas unitarias son una gran fuente de ejemplos
(No pude encontrar la guía para desarrolladores específica de Python a la que hace referencia el enlace del documento de Alex; posiblemente se haya perdido o se haya enterrado en el movimiento de recursos de documentación de Google de code.google.com a desarrolladores.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).