Скачивание Google Sheets spreadsheets с Google Диска на Android


Я работаю над приложением для Android, которое использует gdata-java-клиент для загрузки документов только для отображения. Пока у меня есть приложение, которое аутентифицируется с помощью служб и отображает список пользовательских документов. Когда пользователь выбирает документ, другой запрос делается для самих документов. Запрос на файлы txt, html, rtf и doc работает хорошо, однако, когда я запрашиваю электронную таблицу в любом из них .csv или .формат xsl результат неожиданный.

Я использую объект HTTPResponse для сохраните результат HTTPRequest. Когда я запрашиваю документ .csv или .xsl форматирует HTTPResponse.метод parseAsString () создает целую html-страницу, которая выглядит как домашняя страница Google Docs. Звучит странно, но результатом является фактический html для страницы входа в систему. HTTPResponse.getStatusMessage возвращает 200.

Похоже, я упускаю здесь что-то простое. Есть ли еще одно свойство HTTPResponse, которое содержит .данные csv?

Я почти уверен, что это так. использование правильного uri для загрузки электронных таблиц, потому что он работает, когда я загружаю через браузер. В любом случае вот пример uri:

https://spreadsheets.google.com/feeds/download/spreadsheets/Export?key=0AsE_6_YIr797dHBTUWlHMUFXeTV4ZzJlUGxWRnJXanc&exportFormat=csv

Заранее спасибо за любую помощь:)

3 5

3 ответа:

Я недостаточно знаком с API списка документов, чтобы знать, но из вашего описания это звучит так, как будто вы, возможно, столкнулись с ошибкой в API списка документов, и это звучит для меня как важная проблема для исправления.

Пожалуйста, сообщите о своей проблеме на форуме API списка документов, чтобы увеличить вероятность того, что кто-то знающий сможет разобраться в этой проблеме:

Http://www.google.com/support/forum/p/apps-apis/label?lid=5c316c702e844c99&hl=en

Я не видел ваш код, но, скорее всего, проблема в том, что вы используете ClientLogin и аутентифицируетесь для API списка документов с помощью сервиса "writely". Однако, так как экспорт электронной таблицы будет хитом spreadsheets.google.com, вам нужно будет использовать ClientLogin для аутентификации против "мудрого" сервиса. Из Java это означает использование клиентской библиотеки Java Spreadsheets, которая документирована здесь: http://code.google.com/apis/documents/docs/3.0/developers_guide_java.html#DownloadingSpreadsheets

Обратите внимание на заметку с надписью "Важно " вверху, которая связывает здесь: http://code.google.com/apis/documents/docs/3.0/developers_guide_java.html#DownloadingSpreadsheetsClientLogin

По этой ссылке подробно описывается использование экземпляра SpreadsheetClient.

Удачи:)

Это 2017 год, и теперь есть совершенно новый способ делать вещи. GData, GData API, такие как API списка документов, ClientLogin и URL-адреса загрузки дисков, теперь устарели. На их месте находятся Drive API, Sheets API и более родной способ интеграции с технологиями Google из Android-приложений: клиентская библиотека Google APIs для Android . Существует такжеклиентская библиотека Google API для Java , Если вы работаете на стороне сервера.

Если вы хотите выполнить document -ориентированные операции над электронными таблицами, вы бы использовалиGoogle Sheets API и делали это с помощью клиентской библиотеки выше. Теперь несколько примеров... вот пример кода быстрого запуска Android, а также более общий пример кода быстрого запуска Java для API листов. Не помешает также передать ссылку JavaDocs для API листов . Последний API листов предоставляет функции, недоступные в более старых версиях, а именно предоставляет разработчикам программный документ-ориентированный доступ к листу, как если бы вы использовали пользовательский интерфейс (создание замороженных строк, форматирование ячеек, изменение размера строк/столбцов, добавление сводных таблиц, создание диаграмм и т. д.)

Однако для выполнения доступа на уровне файлов, например, в вопросе OP, вы должны использовать Google Drive API. Есть дажеGoogle Drive API для Android , включая страницуdocs, специально предназначенную для извлечения содержимого документа . Если вы новичок в этом деле библиотека, вот Drive API Android quickstart пример приложения, а также другие примеры кода, чтобы вы начали. ВотDrive API for Android class reference docs тоже.