2010-04-24 4 views
18

documentation for Google Documents List API, кажется, что вы можете создать локальный документ и загрузить его. Нет ли способа создать и отредактировать документ по адресу Документы Google через API?Как вы создаете документ в Документах Google программно?

+0

Если вы не сделаете бота и не авторизуетесь в Документах Google для доступа к пользовательскому интерфейсу, я не думаю, что это возможно без чрезмерного взлома. Это проще изменить локально, а затем загрузить. –

+0

подлинный вопрос .... –

ответ

20

Хотя the docs называют его «загрузка», все сводится к отправке соответствующим образом отформатированный HTTP POST запрос, поэтому конечно это может быть на самом деле новое творение, а не фактическое «загрузить» из иного существующего файла. (Создание через POST запросов похоже на то, что обычно описывается как REST API, хотя в реальном REST вы, как правило, используете запрос PUT, а не, конечно).

Вам просто нужно создать двоичный объект данных, представляющих документ в любом из форматов, перечисленные here - в зависимости от языка программирования, простейшие могут быть text/csv для таблицы и application/rtf для текстового документа - затем поместить в в надлежащим образом отформатированные данные POST. Например, чтобы сделать таблицу самым простым способом (без метаданных), вы могли бы POST что-то вроде:

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 

Каждый конкретный язык программирования, для которого специальный API поставляется может предложить помощь с этим не так сложно задача; например, в Python, за the docs, API рекомендует использовать ETags, чтобы избежать перезаписи изменений, когда несколько клиентов одновременно «загружают» (т. е. создают или обновляют документы). Но подготовка POST напрямую всегда возможна, поскольку API почти REST зарегистрирован как протокол, лежащий в основе всех API-интерфейсов, специфичных для конкретного языка.

11

Ответ Алекса, хотя, несомненно, правильный, задает вопрос: «Как мне это сделать с помощью API Документов Google?»

Вот способ (в Python, потому что я такой парень):

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

Это небольшой Mashup методов, которые я нашел в http://code.google.com/p/gdata-python-client/source/browse/tests/gdata_tests/docs/service_test.py, что я в свою очередь, нашел через this post из Google Group для API документов GData.

Ключевые идеи (для меня во всяком случае) были:

  1. понимая, что формальный параметр конструктора MediaSource в «file_handle» будет принимать какие-либо файл-подобный объект, и
  2. обнаружения (как катамнестического в ФП в к Google Group после упоминания), что юнит-тесты являются отличным источником примеров

(я не смог найти Python конкретного руководство разработчика ссылается док ссылки Алекса - возможно это было потеряно или закапывают в Google, перемещение документации ssets from code.google.com на developers.google.com. Ссылка Alex теперь перенаправляется на более общий документ, который показывает в основном примеры .NET и Java, но только немного Python.)

+2

Привет @Hephaestus спасибо за информацию - выше для создания электронных таблиц Google - но как можно создать документ Google программно? – BKSpurgeon

Смежные вопросы