Как программно создать документ в Google Docs? - PullRequest
25 голосов
/ 24 апреля 2010

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

Ответы [ 3 ]

27 голосов
/ 24 апреля 2010

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

Вам просто нужно создать блок данных, представляющих ваш документ в любом из перечисленных форматов здесь - в зависимости от языка программирования простейшим может быть 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 для документов API рекомендует использовать ETags, чтобы избежать перезаписи изменений, когда несколько клиентов одновременно "загружают" (т.е. создают или обновляют документы). Но подготовка POST напрямую всегда возможна, поскольку почти REST API задокументирован как протокол, лежащий в основе всех языковых API.

13 голосов
/ 08 июня 2012

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

Вот способ (в 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')

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

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

  1. понимая, что формальный параметр конструктора MediaSource "file_handle" будет принимать любой файлоподобный объект, и
  2. обнаружение (как следует из сообщения ОП о публикации в Группе Google), что юнит-тесты являются отличным источником примеров

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

2 голосов
/ 05 февраля 2019

По состоянию на 4 февраля 2019 года в Документах Google теперь есть REST API.

См. Документацию: https://developers.google.com/docs/api/

...