2010-04-24 4 views
18

Il documentation for Google Documents List API, sembra dire che è possibile creare un documento locale e caricarlo. Non esiste un modo per creare e modificare effettivamente un documento su Google Documenti tramite un'API?Come si crea un documento in Google Documenti a livello di programmazione?

+0

A meno che tu non faccia un bot e si autentifichi in Google Docs per accedere all'interfaccia utente, non penso sia possibile senza essere eccessivamente hacky. È più semplice da modificare localmente e quindi caricarlo. –

+0

domanda genuina .... –

risposta

20

Mentre the docs chiamano "uploading", tutto si riduce a l'invio di un appropriato formattato HTTP POST richiesta, in modo da naturalmente si può effettivamente essere una nuova creazione, piuttosto che un vero e proprio "upload" di un file altrimenti esistente. (La creazione attraverso le richieste POST è simile a quella che è normalmente descritta come REST API, anche se in realt REST in genere si utilizza una richiesta PUT, ovviamente).

Hai solo bisogno di creare un blob di dati che rappresentano il documento in uno qualsiasi dei formati elencati here - a seconda del linguaggio di programmazione, più semplice può essere text/csv per un foglio di calcolo e application/rtf per un testo-documento - poi messo in in un dato POST formattato in modo appropriato. Ad esempio, per fare un foglio di calcolo nel modo più semplice (senza metadati), si potrebbe POST qualcosa come:

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 

Ogni linguaggio di programmazione specifico per il quale un API dedicato viene fornito potrebbero offrire aiuto con questo non-così-hard compito; ad esempio, in Python, per the docs, l'API consiglia di utilizzare ETags per evitare di sovrascrivere le modifiche quando più client "caricano" contemporaneamente (ad esempio, creando o aggiornando i documenti). Ma preparare il POST direttamente è sempre possibile, dal momento che l'API di quasi-REST è documentata come il protocollo sottostante tutte le API specifiche della lingua.

11

La risposta di Alex, indubbiamente corretta, pone la domanda: "come faccio tramite l'API di Google Documenti?"

Ecco un modo (in Python, perche' sono quel tipo di ragazzo):

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

Questo è un piccolo mashup di tecniche che ho trovato in http://code.google.com/p/gdata-python-client/source/browse/tests/gdata_tests/docs/service_test.py, che ho a sua volta trovato via this post da il gruppo Google per l'API GData Docs.

Le intuizioni chiave (almeno per me) erano:

  1. rendendosi conto che parametro formale del costruttore MediaSource "file_handle" avrà alcun oggetto simile a file, e
  2. scoprire (come followup del PO al Menzioni post di Google Group) che i test unitari sono una grande fonte di esempi

(non sono stato in grado di trovare la guida per lo sviluppatore specifica di Python a cui fa riferimento il link del documento di Alex - forse è stato perso o sepolto in Google spostamento della documentazione a set da code.google.com a developers.google.com. Il collegamento di Alex ora reindirizza al documento più generico che mostra principalmente esempi .NET e Java, ma solo un po 'di Python.)

+2

Ciao @Hephaestus grazie per le informazioni: quanto sopra è per fare fogli di lavoro su google - ma come si può creare un documento google in modo programmatico? – BKSpurgeon

Problemi correlati