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?
risposta
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.
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:
- rendendosi conto che parametro formale del costruttore MediaSource "file_handle" avrà alcun oggetto simile a file, e
- 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.)
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
- 1. Come si crea un UIViewController a livello di programmazione?
- 2. C# crea report a livello di programmazione
- 3. Come integrare un documento di Google Documenti in Liferay?
- 4. Creazione di commenti ancorati a livello di codice in Google Documenti
- 5. Come si modifica un file .png a livello di programmazione?
- 6. Come si crea un datatemplate con contenuto a livello di programmazione?
- 7. crea una funzione javascript a livello di programmazione
- 8. Come modificare a livello di programmazione tutti i collegamenti ipertestuali in un documento di Word?
- 9. Come si aggiunge UIButton a UIToolBar a livello di programmazione?
- 10. Come si crea una classe di visualizzazione personalizzata a livello di programmazione?
- 11. Come cercare un documento PDF a livello di programmazione in C#
- 12. R: crea una chiamata a livello di programmazione
- 13. Come creare un modulo di Windows a livello di programmazione?
- 14. Come si determina a livello di programmazione a quali eventi può essere ascoltato un oggetto HTML?
- 15. Come si può trovare un problema con un PDF generato a livello di programmazione?
- 16. Come si scrive il testo in grassetto in un documento Word a livello di programmazione senza mettere in grassetto l'intero documento?
- 17. Come programmare un'attività a livello di programmazione
- 18. di accesso a livello di programmazione di Google Chrome segnalibri
- 19. Kit eventi iPhone: crea un EKCalendar al livello di programmazione?
- 20. Come si avvia un'applicazione JNLP a livello di programmazione?
- 21. Come si rilevano i bot a livello di programmazione
- 22. Come si può rilanciare il Finder a livello di programmazione?
- 23. Come si ottiene l'imballaggio bidimensionale 2D a livello di programmazione?
- 24. Come si controlla a livello di programmazione se sono state modificate le proprietà di un documento di MS Word 2007?
- 25. MongoID, incorporando un documento in più documenti
- 26. avvia Google Signin senza GIDSignInButton ma a livello di programmazione
- 27. Come si applica uno stile a livello di programmazione?
- 28. Come si chiude UISearchDisplayController a livello di programmazione?
- 29. Come ottenere l'URL di download per il contenuto di una raccolta documenti a livello di programmazione
- 30. Come si salva un valore in un campo personalizzato in JIRA a livello di programmazione?
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. –
domanda genuina .... –