уважаемые посетители блога, если Вам понравилась, то, пожалуйста, помогите автору с лечением. Подробности тут.

Чем больше изучаю работы с Google API в Delphi, тем больше убеждаюсь в том, что все вновь узнанное, прочитанное и переработанное у себя в голове следует записывать, дабы спустя некоторое время, опять не нарваться на одни и те же ошибки и потерять время. Вот и сегодня обнаружил, что в документации к API отсутствует некоторая информация, которую видимо, упустили из виду после обновления протокола, а равно и введения новых функций в Google Docs. Но это, можно сказать, несущественная мелочь, на обнаружение которой ушло совсем немного времени. Дело касалось описания доступных типов документов – по документации это: document, folder, pdf, presentation, spreadsheet, form. А на деле при анализе XML добавляется ещё два: file и drawing. Так как с Google Docs особого дела до последнего времени не имел – начал вплотную использовать сервис буквально недавно, в т.ч. и API, то могу только предположить, что два новых типа документов появились в последней версии протокола и в документацию пока не попали – тестируется работа, доделывается чего-нибудь, в общем –не критично, но стоит помнить, что в Google Docs на данный момент 8 типов документов и под file может находится файл практически любого произвольного формата от zip-архива до avi и mp3.

Теперь, что касается устройства API в целом:

Работа с документами и папками:

В Google Docs есть замечательная возможность – распределение документов по отдельным “папкам”. Можно получить подобие дерева каталогов как на своем домашнем ПК. Ничего не скажешь – реально удобная штука.  Но следует помнить, что при работе с API Вы не сможете воссоздать на своем жестком диске точную копию расположения папок как на сервере. Так как по большому счёту “папка” в Google Docs – это простая запись в БД (или, говоря терминами Google – Хранилища данных) и Вы можете легко сделать себе вот такую структуру папок на сервере:

Папка_1

Папка_2

Папка_3

Папка_3

Папка_4

То есть на одном “уровне” две или более папок с одним названием. И это нормально, учитывая ещё и то обстоятельство, что Вам могут открыть доступ к какой-нибудь чужой папке, которая имеет точно такое же название как у Вас. Чтобы сортировать документы по папкам, определять какие папки на каком уровне вложенности находятся и т.д. необходимо знать два параметра:

  1. ResourceID объекта entry из XML. С помощью него легко определяется есть ли у объекта дочерние элементы
  2. Значение атрибута href у узла link, который содержит rel=»http://schemas.google.com/docs/2007#parent». Если такого узла нет – то документ или папка находятся “сверху” вне других папок. Если есть, то чтобы узнать ResourceID родителя достаточно из значения атрибута href удалить подстроку “http://docs.google.com/feeds/default/private/full/folder%3A

Ну и, соответственно, зная какие элементы находятся сверху, какие являются вложенными можно уже воссоздать структуру расположения документов, например в TreeView.

Что касается документов, то здесь практически то же самое, что и с папками, т.е. в одной “папке”, на одном уровне может находиться любое количество документов с одинаковыми названиями. Поэтому при экспорте нескольких документов себе на компьютер следует проверять существование файла с таким названием, предлагать замену/переименование и т.д. Все объекты в Google Docs различаются по ResourceID.

Полнотекстовый поиск по документам:

Ещё одна отличная возможность, добавленная совсем недавно. Здесь опять же стоит помнить, что API находится в Лаборатории и в любой момент что-то может измениться. Пока, судя по тому, что мне удалось испробовать в поиске, могу сказать, что поиск с использованием API работает отлично с документами на английском, но мне не удалось отыскать документы, содержащие текст на русском. Хотя по заголовкам документов поиск работает отлично. Так что ждем пока в этом направлении изменений в лучшую сторону.

Работа с XML-документами:

При получении данных о всех документах и папках, доступных в аккаунте пользователя можно использовать два запроса:

  1. На получение данных о папках: GET /feeds/default/private/full/-/folder
  2. На получение данных о документах: GET /feeds/default/private/full

Либо, если хотите получить всё содержимое в одном документа, сделать такой запрос:

GET /feeds/default/private/full?showfolders=true

И соответственно, используя различные вариации URL можно получать данные по отдельным типам документов (см. описание здесь)

Загрузка файлов:

В общих чертах эту операцию я рассматривал в статье “Экспорт документов Google Docs”. Единственное, что следует здесь помнить – это-то, что документы с типом pdf или file скачиваются иным образом, который описан вот в этом разделе документации.

Пока вроде бы все, что хотел запомнить по поводу API. Надеюсь, что в следующей статье, посвященной работе с Google API в Delphi, смогу предоставить рабочий пример программки для работы с аккаунтом Google Docs.

Книжная полка

Описание: Рассмотрены практические вопросы по разработке клиент-серверных приложений в среде Delphi 7 и Delphi 2005 с использованием СУБД MS SQL Server 2000, InterBase и Firebird. Приведена информация о теории построения реляционных баз данных и языке SQL. Освещены вопросы эксплуатации и администрирования СУБД.
купить книгу delphi на ЛитРес
Описание: Рассмотрены малоосвещенные вопросы программирования в Delphi. Описаны методы интеграции VCL и API. Показаны внутренние механизмы VCL и приведены примеры вмешательства в эти механизмы. Рассмотрено использование сокетов в Delphi: различные режимы их работы, особенности для протоколов TCP и UDP и др.
купить книгу delphi на ЛитРес
0 0 голоса
Рейтинг статьи
уважаемые посетители блога, если Вам понравилась, то, пожалуйста, помогите автору с лечением. Подробности тут.
Подписаться
Уведомить о
0 Комментарий
Межтекстовые Отзывы
Посмотреть все комментарии